00001 #ifndef __CCountedObject__ 00002 #define __CCountedObject__ 00003 00004 // =========================================================================== 00005 00006 #include "ICountedObject.hpp" 00007 using Exponent::Basics::ICountedObject; 00008 00009 // =========================================================================== 00010 00011 namespace Exponent 00012 { 00013 namespace Basics 00014 { 00096 class CCountedObject : public ICountedObject 00097 { 00099 EXPONENT_CLASS_DECLARATION; 00102 // =========================================================================== 00103 00104 public: 00105 00106 // =========================================================================== 00107 00111 CCountedObject(); 00112 00117 CCountedObject(const char *className); 00118 00122 virtual ~CCountedObject(); 00123 00124 // =========================================================================== 00125 00129 virtual void referenced(); 00130 00134 virtual void dereference(); 00135 00140 virtual long getReferenceCount() const; 00141 00147 virtual void getObjectDescription(char *string, const long size) const; 00148 00149 // =========================================================================== 00150 00151 protected: 00152 00153 // =========================================================================== 00154 00155 long m_referenceCount; 00157 }; 00158 } 00159 } 00160 00161 #endif // End of CCountedObject.hpp