03c764bafb6dd3f47f876c9d74fa5fa05143f2d7
[reactos.git] / reactos / tools / rbuild / backend / backend.cpp
1
2 #include "../pch.h"
3
4 #include "../Rbuild.h"
5 #include "backend.h"
6
7 #include "mingw/mingw.h"
8
9 using std::string;
10 using std::vector;
11
12 vector<Backend::Factory*>* Backend::Factory::factories = NULL;
13
14 Backend::Factory::Factory ( const std::string& name_ )
15 : name(name_)
16 {
17 if ( !factories )
18 factories = new vector<Factory*>;
19 factories->push_back ( this );
20 }
21
22 /*static*/ Backend*
23 Backend::Factory::Create ( const std::string& name, Project& project )
24 {
25 string sname ( name );
26 strlwr ( &sname[0] );
27 if ( !factories || !factories->size() )
28 throw Exception ( "internal tool error: no registered factories" );
29 vector<Backend::Factory*>& fact = *factories;
30 for ( size_t i = 0; i < fact.size(); i++ )
31 {
32 //char* p = *fact[i];
33 if ( sname == fact[i]->name )
34 return (*fact[i]) ( project );
35 }
36 throw UnknownBackendException ( sname );
37 return NULL;
38 }
39
40 Backend::Backend ( Project& project )
41 : ProjectNode ( project )
42 {
43 }