diff --git a/reactos/tools/rbuild/makefile b/reactos/tools/rbuild/makefile index 11927261ce3..1d94f5babd9 100644 --- a/reactos/tools/rbuild/makefile +++ b/reactos/tools/rbuild/makefile @@ -4,7 +4,7 @@ TARGET = rbuild$(EXE_POSTFIX) all: $(TARGET) -BASE_OBJECTS = xml.o module.o +BASE_OBJECTS = xml.o project.o module.o OBJECTS = $(BASE_OBJECTS) rbuild.o diff --git a/reactos/tools/rbuild/project.cpp b/reactos/tools/rbuild/project.cpp new file mode 100644 index 00000000000..bfd60363753 --- /dev/null +++ b/reactos/tools/rbuild/project.cpp @@ -0,0 +1,49 @@ +#ifdef _MSC_VER +#pragma warning ( disable : 4786 ) // identifier was truncated to '255' characters in the debug information +#endif//_MSC_VER + +#include "rbuild.h" + +using std::string; +using std::vector; + +Project::~Project() +{ + for ( size_t i = 0; i < modules.size(); i++ ) + delete modules[i]; +} + +void +Project::ProcessXML ( const XMLElement& e, const string& path ) +{ + const XMLAttribute *att; + string subpath(path); + if ( e.name == "project" ) + { + att = e.GetAttribute ( "name", false ); + if ( !att ) + name = "Unnamed"; + else + name = att->value; + } + else if ( e.name == "module" ) + { + att = e.GetAttribute ( "name", true ); + if ( !att ) + return; + Module* module = new Module ( e, att->value, path ); + modules.push_back ( module ); + module->ProcessXML ( e, path ); + return; + } + else if ( e.name == "directory" ) + { + // this code is duplicated between Project::ProcessXML() and Module::ProcessXML() :( + const XMLAttribute* att = e.GetAttribute ( "name", true ); + if ( !att ) + return; + subpath = path + "/" + att->value; + } + for ( size_t i = 0; i < e.subElements.size(); i++ ) + ProcessXML ( *e.subElements[i], subpath ); +} diff --git a/reactos/tools/rbuild/rbuild.cpp b/reactos/tools/rbuild/rbuild.cpp index ea087ecffff..87004d2299e 100644 --- a/reactos/tools/rbuild/rbuild.cpp +++ b/reactos/tools/rbuild/rbuild.cpp @@ -12,47 +12,6 @@ using std::string; using std::vector; -Project::~Project() -{ - for ( size_t i = 0; i < modules.size(); i++ ) - delete modules[i]; -} - -void -Project::ProcessXML ( const XMLElement& e, const string& path ) -{ - const XMLAttribute *att; - string subpath(path); - if ( e.name == "project" ) - { - att = e.GetAttribute ( "name", false ); - if ( !att ) - name = "Unnamed"; - else - name = att->value; - } - else if ( e.name == "module" ) - { - att = e.GetAttribute ( "name", true ); - if ( !att ) - return; - Module* module = new Module ( e, att->value, path ); - modules.push_back ( module ); - module->ProcessXML ( e, path ); - return; - } - else if ( e.name == "directory" ) - { - // this code is duplicated between Project::ProcessXML() and Module::ProcessXML() :( - const XMLAttribute* att = e.GetAttribute ( "name", true ); - if ( !att ) - return; - subpath = path + "/" + att->value; - } - for ( size_t i = 0; i < e.subElements.size(); i++ ) - ProcessXML ( *e.subElements[i], subpath ); -} - int main ( int argc, char** argv ) {