00001 00007 #pragma once 00008 00009 #include "base.hpp" 00010 00015 class agls_API IObject 00016 : public IBase 00017 { 00018 public: 00022 virtual ~IObject(void) { /*empty*/; } 00023 00024 public: 00028 virtual void GetName(char acName[STRLEN_OBJECT_NAME]) = 0; 00029 00033 virtual void SetName(const char acName[STRLEN_OBJECT_NAME]) = 0; 00034 }; 00035 00040 template<typename TN> 00041 class agls_API TObject 00042 : public TBase<TN> 00043 { 00044 public: 00048 TObject(void) 00049 { 00050 this->Create(); 00051 } 00052 00056 virtual ~TObject(void) 00057 { 00058 this->Destory(); 00059 } 00060 00061 public: 00065 virtual void GetName(char acName[STRLEN_OBJECT_NAME]) 00066 { 00068 sprintf_s(acName, STRLEN_OBJECT_NAME, "%s", this->m_acName); 00069 } 00070 00074 virtual void SetName(const char acName[STRLEN_OBJECT_NAME]) 00075 { 00077 sprintf_s(this->m_acName, STRLEN_OBJECT_NAME, "%s", acName); 00078 } 00079 00080 private: 00085 void Create(void) 00086 { 00087 this->ClearUp(); 00088 } 00089 00094 void Destory(void) 00095 { 00096 this->ClearUp(); 00097 } 00098 00104 void ClearUp(void) 00105 { 00107 sprintf_s(this->m_acName, STRLEN_OBJECT_NAME, "\0"); 00108 } 00109 00110 private: 00114 char m_acName[STRLEN_OBJECT_NAME]; 00115 }; 00116 00121 class agls_API CObject 00122 : public TObject<IObject> 00123 { 00124 public: 00128 CObject(void); 00129 00131 // * \brief constructor 00132 // */ 00133 //CObject(const char acName[STRLEN_OBJECT_NAME]); 00134 00138 virtual ~CObject(void); 00139 };