00001 /******************************************************************************/ 00002 /* */ 00003 /* POLiTe - Persistent Object Library Test */ 00004 /* Ph.D. Thesis by Mgr. Michal Kopecky */ 00005 /* */ 00006 /* Charles University Prague */ 00007 /* */ 00008 /******************************************************************************/ 00009 /* */ 00010 /* File name: ... */ 00011 /* Module: ...... */ 00012 /* */ 00013 /******************************************************************************/ 00014 00015 #ifndef __C_CLASSREGISTER_H__ 00016 #define __C_CLASSREGISTER_H__ 00017 00018 // Standard Header(s) 00019 #include <fstream.h> 00020 00021 // Other POLiTe Header(s) 00022 #include <cProtoBase.h> 00023 00024 class DLL_External ClassRegister 00025 { 00026 #ifdef POLITE_TEST_FRIEND 00027 friend POLITE_TEST_FRIEND; 00028 #endif // POLITE_TEST_FRIEND 00029 00030 protected: 00031 static void _Invent( 00032 class ProtoBase * const _p = ProtoBase::_root, 00033 int _l = 0 00034 ); 00035 void _Initialise(ProtoBase * const _p); 00036 // Initialises all registered prototypes 00037 void _WriteDDL(ProtoBase * const _p, ofstream &S, class Database &Db); 00038 // Generates DDL statements for all registered prototypes 00039 00040 public: 00041 class ProtoBase *Find(const char * const _n) const {return ProtoBase::Find(_n);}; 00042 class ProtoBase *operator [](const char * const _n) const {return ProtoBase::Find(_n);}; 00043 00044 bool WriteDDL(ofstream &S, class Database &Db); 00045 // generates DDL stements nedded for the library to run 00046 }; 00047 00048 extern DLL_External class ClassRegister Class; 00049 00050 #endif //__C_CLASSREGISTER_H__