Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #pragma once
00019
00020 #ifndef __OpenKarto_MetaClassManager_h__
00021 #define __OpenKarto_MetaClassManager_h__
00022
00023 #include <OpenKarto/String.h>
00024
00025 namespace karto
00026 {
00027
00029
00030
00031
00032
00036
00037 class MetaClass;
00038
00039 struct MetaClassManagerPrivate;
00040
00044
00049 class KARTO_EXPORT MetaClassManager
00050 {
00051 public:
00055 static MetaClassManager& GetInstance();
00056
00057 public:
00065 MetaClass& RegisterNew(const karto::String& rName, const karto::String& rId);
00066
00073 const MetaClass& GetByName(const karto::String& rName) const;
00074
00081 const MetaClass& GetById(const karto::String& rId) const;
00082
00088 kt_bool ClassExists(const karto::String& rId) const;
00089
00094 kt_size_t GetSize() const;
00095
00100 void Clear();
00101
00102 public:
00108 const MetaClass& operator [] (kt_size_t index) const;
00109
00110 private:
00114 MetaClassManager();
00115
00119 ~MetaClassManager();
00120
00121 private:
00125 MetaClassManager(const MetaClassManager&);
00126
00130 const MetaClassManager& operator=(const MetaClassManager&);
00131
00132 private:
00133 MetaClassManagerPrivate* m_pPrivate;
00134 };
00135
00136
00137
00139
00140 }
00141
00142 #endif // __OpenKarto_MetaClassManager_h__