00001 00031 #ifndef LL_METACLASST_H 00032 #define LL_METACLASST_H 00033 00034 #include "metaclass.h" 00035 00036 template<class TObject> 00037 class LLMetaClassT : public LLMetaClass 00038 { 00039 public: 00040 00041 virtual ~LLMetaClassT() {;} 00042 00043 static const LLMetaClassT& instance() 00044 { 00045 static const LLMetaClassT& instance = buildMetaClass(); 00046 return instance; 00047 } 00048 00049 private: 00050 00051 static const LLMetaClassT& buildMetaClass() 00052 { 00053 LLMetaClassT& meta_class = *(new LLMetaClassT()); 00054 reflectProperties(meta_class); 00055 return meta_class; 00056 } 00057 00058 LLMetaClassT() {;} 00059 00060 static void reflectProperties(LLMetaClass&) 00061 { 00062 } 00063 }; 00064 00065 #endif // LL_METACLASST_H