added xi:fallback support
[reactos.git] / reactos / tools / rbuild / backend / backend.cpp
index a54558c..02da1dc 100644 (file)
@@ -8,17 +8,29 @@ using std::string;
 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