00001 #include "BehaviorBase.h"
00002
00003 std::set<BehaviorBase*> BehaviorBase::registry;
00004
00005
00006 BehaviorBase::BehaviorBase()
00007 : ReferenceCounter(), EventListener(), started(false),
00008 instanceName("?"), className("BehaviorBase")
00009 {
00010 registry.insert(this);
00011 }
00012
00013 BehaviorBase::BehaviorBase(const std::string& name)
00014 : ReferenceCounter(), EventListener(), started(false),
00015 instanceName(name), className(name)
00016 {
00017 registry.insert(this);
00018 }
00019
00020 BehaviorBase::BehaviorBase(const std::string& classname, const std::string& instancename)
00021 : ReferenceCounter(), EventListener(), started(false),
00022 instanceName(instancename), className(classname)
00023 {
00024 registry.insert(this);
00025 }
00026
00027
00028 BehaviorBase::BehaviorBase(const BehaviorBase& b)
00029 : ReferenceCounter(b), EventListener(b), started(b.started),
00030 instanceName(b.instanceName), className(b.className)
00031 {
00032 registry.insert(this);
00033 }
00034
00035 BehaviorBase&
00036 BehaviorBase::operator=(const BehaviorBase& b) {
00037 ReferenceCounter::operator=(b);
00038 EventListener::operator=(b);
00039 started=b.started;
00040 instanceName=b.instanceName;
00041 return *this;
00042 }
00043
00044 BehaviorBase::~BehaviorBase() {
00045 SetAutoDelete(false);
00046 if(started)
00047 DoStop();
00048
00049 registry.erase(this);
00050 }
00051
00052 void
00053 BehaviorBase::DoStart() {
00054
00055 if(!started) {
00056 started=true;
00057 AddReference();
00058 }
00059 }
00060
00061 void
00062 BehaviorBase::DoStop() {
00063
00064 if(started) {
00065 started=false;
00066 RemoveReference();
00067 }
00068 }
00069