00001 #pragma once 00002 00003 #include "mngbase.hpp" 00004 #include "object.hpp" 00005 00006 class agls_API IMngObject 00007 : public IMngBase 00008 { 00009 public: 00010 virtual ~IMngObject(void) { ; } 00011 00012 public: 00013 virtual bool CreateItem(IObject** ppObject, const char acName[STRLEN_OBJECT_NAME]) = 0; 00014 }; 00015 00016 template<typename TN, typename TI> 00017 class agls_API TMngObject 00018 : public TMngBase<TN, TI> 00019 { 00020 public: 00021 TMngObject(void) { ; } 00022 virtual ~TMngObject(void) { ; } 00023 00024 public: 00025 virtual bool CreateItem(IObject** ppObject, const char acName[STRLEN_OBJECT_NAME]) 00026 { 00027 if (NULL == ppObject || 00028 NULL == *ppObject) 00029 { 00030 return false; 00031 } 00032 IBase* pBase = *ppObject; 00033 if (!__super::CreateItem(&pBase)) 00034 { 00035 return false; 00036 } 00037 (*ppObject)->SetName(acName); 00038 return true; 00039 } 00040 }; 00041 00042 class agls_API CMngObject 00043 : public TMngObject<IMngObject, CObject> 00044 { 00045 public: 00046 CMngObject(void); 00047 virtual ~CMngObject(void); 00048 };