#include <registry.h>
Portier Pierre
Nevrax France
Definition at line 49 of file registry.h.
Public Member Functions | |
| IBasicInterface * | createInstance (const sint32) |
| Creates a new instance from a class using its registry index. | |
| IBasicInterface * | createInstance (const char *) |
| Creates a new instance from a class using its class name in the registry. | |
| IBasicInterface * | createInstance (const CIdentType &) |
| Creates a new instance from a class using its identifier. | |
| CRegistry () | |
| const bool | existsClass (const char *) const |
| const IClassFactory * | getFactory (sint32) |
| Creates a new instance from a class using its registry index. | |
| const IClassFactory * | getFactory (const char *) |
| Creates a new instance from a class using its class name in the registry. | |
| const IClassFactory * | getFactory (const CIdentType &) |
| Creates a new instance from a class using its identifier. | |
| const CIdentType & | getIdent (const char *) |
| Returns the identifier of a class from its name. | |
| const CIdentType & | getIdent (const sint32) |
| Returns the identifier of a class from its registry index. | |
| const sint32 | getNumIdent (const char *) |
| Returns the registry index of a class from its name. | |
| const sint32 | getNumIdent (const CIdentType &) |
| Returns the registry index of a class from its identifier. | |
| const CIdentType & | operator[] (sint32 i) const |
| Get CIdentType with an index. | |
| sint32 | registerClass (const CIdentType &, const IClassFactory &) |
| Registers a new class. | |
| sint32 | size () const |
| Get registry size. | |
| void | unRegisterClass (const CIdentType &) |
| Removes a class from the registry. | |
| ~CRegistry () | |
Private Types | |
| typedef std::map< CIdentType, CRegistryClass *, std::less< CIdentType > > | TMapRegistry |
Private Attributes | |
| TMapRegistry & | _MapRegistry |
| Map Hows stored class factory instance. | |
| std::vector< CRegistryClass * > | _TableRegistry |
| Table for class factory index. | |
|
|
Definition at line 63 of file registry.h. Referenced by CRegistry(). |
|
|
Definition at line 41 of file registry.cpp. References _MapRegistry, new, and TMapRegistry.
00041 : _MapRegistry(*(new TMapRegistry)) 00042 { 00043 } |
|
|
Definition at line 45 of file registry.cpp. References _MapRegistry, _TableRegistry, and sint32.
00046 {
00047 for(sint32 i = 0; i < (sint32) _TableRegistry.size(); i++)
00048 {
00049 if ( _TableRegistry[i] )
00050 {
00051 delete _TableRegistry[i];
00052 }
00053 }
00054 delete &_MapRegistry;
00055 }
|
|
|
Creates a new instance from a class using its registry index.
Definition at line 161 of file registry.cpp. References _TableRegistry, and sint32.
00162 {
00163 IBasicInterface *instance = (IBasicInterface *)_TableRegistry[i]->FactoryClass->createInstance();
00164 return instance;
00165 }
|
|
|
Creates a new instance from a class using its class name in the registry.
Definition at line 154 of file registry.cpp. References _TableRegistry, and getNumIdent().
00155 {
00156 IBasicInterface *instance = (IBasicInterface *)_TableRegistry[ getNumIdent(class_name) ]->FactoryClass->createInstance();
00157 return instance;
00158 }
|
|
|
Creates a new instance from a class using its identifier.
Definition at line 148 of file registry.cpp. References getNumIdent(). Referenced by NLAIC::CIdentType::allocClass(), and NLAIC::createInstance().
00149 {
00150 return createInstance(getNumIdent(ident));
00151 }
|
|
|
Definition at line 215 of file registry.cpp. References _TableRegistry. Referenced by NLAISCRIPT::CCompilateur::getTypeOfClass().
00216 {
00217 std::vector<CRegistryClass *>::const_iterator it_rc = _TableRegistry.begin();
00218 while ( it_rc != _TableRegistry.end() )
00219 {
00220 const char *rc_name = (const char *) (*it_rc)->NameClass;
00221 if ( strcmp( class_name, rc_name ) == 0)
00222 return true;
00223 it_rc++;
00224 }
00225 return false;
00226 }
|
|
|
Creates a new instance from a class using its registry index.
Definition at line 199 of file registry.cpp. References _TableRegistry, and sint32.
00200 {
00201 return (*(_TableRegistry.begin() + i))->FactoryClass;//_TableRegistry[i]->FactoryClass;
00202 //return _TableRegistry[i]->FactoryClass;
00203 }
|
|
|
Creates a new instance from a class using its class name in the registry.
Definition at line 184 of file registry.cpp. References id.
00185 {
00186 try
00187 {
00188 CIdentType id(class_name);
00189 return id.getFactory();
00190 }
00191 catch (NLAIE::IException &err)
00192 {
00193 throw NLAIE::CExceptionContainer(err.what());
00194 }
00195 return NULL;
00196 }
|
|
|
Creates a new instance from a class using its identifier.
Definition at line 168 of file registry.cpp. References _MapRegistry, NLAIC::stringGetBuild(), and t. Referenced by NLAIC::CIdentType::getFactory().
00169 {
00170 CRegistryClass *t;
00171 TMapRegistry::iterator Itr = _MapRegistry.find(ident);
00172 if(Itr != _MapRegistry.end()) t = (*Itr).second;
00173 else
00174 {
00175 std::string text;
00176 text = NLAIC::stringGetBuild("can't find '%s' in the registry",(char *)((const char *)ident));
00177 NLAIE::CExceptionUnRegisterClassError e(text.c_str());
00178 throw e;
00179 }
00180 return t->FactoryClass;
00181 }
|
|
|
Returns the identifier of a class from its name.
Definition at line 134 of file registry.cpp. References _TableRegistry, sint32, and NLAIC::stringGetBuild().
00135 {
00136 for ( sint32 i = 0; i < (sint32) _TableRegistry.size(); i++ )
00137 {
00138 if ( !strcmp( (const char *)_TableRegistry[i]->NameClass, class_name ) )
00139 return _TableRegistry[ i ]->NameClass;
00140 }
00141 std::string text;
00142 text = NLAIC::stringGetBuild("can't find '%s' in the registry",(char *)class_name);
00143 NLAIE::CExceptionUnRegisterClassError e(text.c_str());
00144 throw e;
00145 }
|
|
|
Returns the identifier of a class from its registry index.
Definition at line 128 of file registry.cpp. References _TableRegistry, index, and sint32. Referenced by NLAIC::CIdentType::serial().
00129 {
00130 return _TableRegistry[index]->NameClass;
00131 }
|
|
|
Returns the registry index of a class from its name.
Definition at line 112 of file registry.cpp. References _TableRegistry, sint32, and NLAIC::stringGetBuild().
00113 {
00114 for ( sint32 i = 0; i < (sint32) _TableRegistry.size(); i++ )
00115 {
00116 if ( !strcmp( (const char *)_TableRegistry[i]->NameClass, class_name ) )
00117 return i;
00118 }
00119
00120 std::string text;
00121 text = NLAIC::stringGetBuild("can't find '%s' in the registry",(char *)class_name);
00122 NLAIE::CExceptionUnRegisterClassError e(text.c_str());
00123 throw e;
00124 return -1;
00125 }
|
|
|
Returns the registry index of a class from its identifier.
Definition at line 96 of file registry.cpp. References _MapRegistry, sint32, NLAIC::stringGetBuild(), and t. Referenced by createInstance(), NLAIC::CIdentType::serial(), and unRegisterClass().
00097 {
00098 CRegistryClass *t;
00099 TMapRegistry::iterator Itr = _MapRegistry.find(ident);
00100 if(Itr != _MapRegistry.end()) t = (*Itr).second;
00101 else
00102 {
00103 std::string text;
00104 text = NLAIC::stringGetBuild("can't find '%s' in the registry",(char *)((const char *)ident));
00105 NLAIE::CExceptionUnRegisterClassError e(text.c_str());
00106 throw e;
00107 }
00108 return t->Index;
00109 }
|
|
|
Get CIdentType with an index.
Definition at line 205 of file registry.cpp. References _TableRegistry, and sint32.
00206 {
00207 return _TableRegistry[i]->NameClass;
00208 }
|
|
||||||||||||
|
Registers a new class.
Definition at line 57 of file registry.cpp. References _MapRegistry, _TableRegistry, sint32, and t. Referenced by NLAIC::registerClass().
00058 {
00059 // Recherche un emplacement vide
00060 /*for(sint32 idx = 0; idx < (sint32) _TableRegistry.size(); idx++)
00061 {
00062 if ( _TableRegistry[ idx ] == NULL )
00063 {
00064 CRegistryClass *t = new CRegistryClass( ident, FactoryClass, idx );
00065 _TableRegistry[ idx ] = t;
00066 _MapRegistry.insert( TMapRegistry::value_type(t->NameClass, t) );
00067 return idx;
00068 }
00069 }*/
00070
00071 // Sinon met à la fin de la table
00072 CRegistryClass *t = new CRegistryClass(ident, FactoryClass, _TableRegistry.size() );
00073 _MapRegistry.insert( TMapRegistry::value_type(ident, t) );
00074 _TableRegistry.push_back( t );
00075 return _TableRegistry.size() - 1;
00076 }
|
|
|
Get registry size.
Definition at line 210 of file registry.cpp. References _TableRegistry, and sint32.
00211 {
00212 return _TableRegistry.size();
00213 }
|
|
|
Removes a class from the registry.
Definition at line 79 of file registry.cpp. References _TableRegistry, getNumIdent(), and sint32.
00080 {
00081 sint32 i;
00082 try
00083 {
00084 i = getNumIdent(ident);
00085 }
00086 catch(NLAIE::IException &e)
00087 {
00088 throw NLAIE::CExceptionObjectNotFoundError(e.what());
00089 }
00090 delete _TableRegistry[i]->FactoryClass;
00091 delete _TableRegistry[i];
00092 _TableRegistry[i] = NULL;
00093 }
|
|
|
Map Hows stored class factory instance.
Definition at line 68 of file registry.h. Referenced by CRegistry(), getFactory(), getNumIdent(), registerClass(), and ~CRegistry(). |
|
|
Table for class factory index.
Definition at line 66 of file registry.h. Referenced by createInstance(), existsClass(), getFactory(), getIdent(), getNumIdent(), operator[](), registerClass(), size(), unRegisterClass(), and ~CRegistry(). |
1.3.6