using std::vector;\r
using std::map;\r
\r
-map<string,Backend::Factory*>* Backend::Factory::factories = NULL;\r
+map<string,Backend::Factory*>*\r
+Backend::Factory::factories = NULL;\r
+int\r
+Backend::Factory::ref = 0;\r
\r
Backend::Factory::Factory ( const std::string& name_ )\r
{\r
string name(name_);\r
strlwr ( &name[0] );\r
- if ( !factories )\r
+ if ( !ref++ )\r
factories = new map<string,Factory*>;\r
(*factories)[name] = this;\r
}\r
\r
+Backend::Factory::~Factory()\r
+{\r
+ if ( !--ref )\r
+ {\r
+ delete factories;\r
+ factories = NULL;\r
+ }\r
+}\r
+\r
/*static*/ Backend*\r
Backend::Factory::Create ( const string& name,\r
Project& project )\r