00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "listener.hh"
00025 #include "vobject.hh"
00026
00027 using namespace VOS;
00028
00029 VobjectEvent::VobjectEvent(EventType et, Vobject& init,
00030 Vobject& fromobj, int pos, const string& contextname,
00031 Vobject& childobj)
00032 : event(et), initiator(&init), from(&fromobj), position(pos),
00033 newstring(contextname), newchild(&childobj), oldchild(0)
00034 {
00035 initiator->acquire();
00036 from->acquire();
00037 newchild->acquire();
00038 if(event == ChildRemove) {
00039 oldchild = &childobj;
00040 oldchild->acquire();
00041 }
00042 }
00043
00044 VobjectEvent::VobjectEvent(EventType et, Vobject& init,
00045 Vobject& fromobj, int pos, const string& contextname,
00046 Vobject& newobj, Vobject& oldobj)
00047 : event(et), initiator(&init), from(&fromobj), position(pos),
00048 newstring(contextname), newchild(&newobj), oldchild(&oldobj)
00049 {
00050 initiator->acquire();
00051 from->acquire();
00052 newchild->acquire();
00053 oldchild->acquire();
00054 }
00055
00056 VobjectEvent::VobjectEvent(EventType et, Vobject& init, Vobject& fromobj, const string& type)
00057 : event(et), initiator(&init), from(&fromobj), position(-1),
00058 newstring(type), newchild(0), oldchild(0)
00059 {
00060 initiator->acquire();
00061 from->acquire();
00062 }
00063
00064 VobjectEvent::VobjectEvent(EventType et, Vobject& init, Vobject& fromobj)
00065 : event(et), initiator(&init), from(&fromobj), position(-1),
00066 newstring(""), newchild(0), oldchild(0)
00067 {
00068 initiator->acquire();
00069 from->acquire();
00070 }
00071
00072 VobjectEvent::~VobjectEvent()
00073 {
00074 if(initiator) initiator->release();
00075 if(from) from->release();
00076 if(newchild) newchild->release();
00077 if(oldchild) oldchild->release();
00078 }