Move project to its own file.

svn path=/branches/xmlbuildsystem/; revision=12793
This commit is contained in:
Casper Hornstrup
2005-01-04 18:24:21 +00:00
parent ac754b1f06
commit 47c197a607
3 changed files with 50 additions and 42 deletions
+1 -1
View File
@@ -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
+49
View File
@@ -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 );
}
-41
View File
@@ -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 )
{