Don't pass objects ( particularly vectors ) by value unless absolutely necessary...
authorRoyce Mitchell III <royce3@ev1.net>
Sat, 8 Jan 2005 02:33:09 +0000 (02:33 +0000)
committerRoyce Mitchell III <royce3@ev1.net>
Sat, 8 Jan 2005 02:33:09 +0000 (02:33 +0000)
svn path=/branches/xmlbuildsystem/; revision=12878

reactos/tools/rbuild/backend/mingw/mingw.cpp
reactos/tools/rbuild/backend/mingw/mingw.h
reactos/tools/rbuild/backend/mingw/modulehandler.cpp
reactos/tools/rbuild/backend/mingw/modulehandler.h
reactos/tools/rbuild/module.cpp
reactos/tools/rbuild/rbuild.h

index 4c3d515..f206013 100644 (file)
@@ -100,7 +100,7 @@ MingwBackend::ProcessModule ( Module& module )
 }\r
 \r
 void\r
-MingwBackend::GetModuleHandlers ( MingwModuleHandlerList& moduleHandlers )\r
+MingwBackend::GetModuleHandlers ( MingwModuleHandlerList& moduleHandlers ) const\r
 {\r
        moduleHandlers.push_back ( new MingwKernelModuleHandler ( fMakefile ) );\r
        moduleHandlers.push_back ( new MingwStaticLibraryModuleHandler ( fMakefile ) );\r
index 794a7f9..6483933 100644 (file)
@@ -7,6 +7,9 @@
 class MingwModuleHandlerList : public std::vector<MingwModuleHandler*>\r
 {\r
 public:\r
+       MingwModuleHandlerList()\r
+       {\r
+       }\r
        ~MingwModuleHandlerList()\r
        {\r
                for ( size_t i = 0; i < size(); i++ )\r
@@ -14,6 +17,10 @@ public:
                        delete (*this)[i];\r
                }\r
        }\r
+private:\r
+       // disable copy semantics\r
+       MingwModuleHandlerList ( const MingwModuleHandlerList& );\r
+       MingwModuleHandlerList& operator = ( const MingwModuleHandlerList& );\r
 };\r
 \r
 \r
@@ -24,7 +31,7 @@ public:
        virtual void Process ();\r
 private:\r
        void ProcessModule ( Module& module );\r
-       void GetModuleHandlers ( MingwModuleHandlerList& moduleHandlers );\r
+       void GetModuleHandlers ( MingwModuleHandlerList& moduleHandlers ) const;\r
        void CreateMakefile ();\r
        void CloseMakefile ();\r
        void GenerateHeader ();\r
index 4acf249..c7a999f 100644 (file)
@@ -15,14 +15,14 @@ MingwModuleHandler::MingwModuleHandler ( FILE* fMakefile )
 }\r
 \r
 string\r
-MingwModuleHandler::GetWorkingDirectory ()\r
+MingwModuleHandler::GetWorkingDirectory () const\r
 {\r
        return ".";\r
 }\r
 \r
 string\r
-MingwModuleHandler::ReplaceExtension ( string filename,\r
-                                          string newExtension )\r
+MingwModuleHandler::ReplaceExtension ( const string& filename,\r
+                                          const string& newExtension ) const\r
 {\r
        size_t index = filename.find_last_of ( '.' );\r
        if (index != string::npos)\r
@@ -31,14 +31,14 @@ MingwModuleHandler::ReplaceExtension ( string filename,
 }\r
 \r
 string\r
-MingwModuleHandler::GetModuleArchiveFilename ( Module& module )\r
+MingwModuleHandler::GetModuleArchiveFilename ( const Module& module ) const\r
 {\r
        return ReplaceExtension ( module.GetPath ().c_str (),\r
                                  ".a" );\r
 }\r
 \r
 string\r
-MingwModuleHandler::GetImportLibraryDependencies ( Module& module )\r
+MingwModuleHandler::GetImportLibraryDependencies ( const Module& module ) const\r
 {\r
        if ( module.libraries.size () == 0 )\r
                return "";\r
@@ -56,7 +56,7 @@ MingwModuleHandler::GetImportLibraryDependencies ( Module& module )
 }\r
 \r
 string\r
-MingwModuleHandler::GetSourceFilenames ( Module& module )\r
+MingwModuleHandler::GetSourceFilenames ( const Module& module ) const\r
 {\r
        if ( module.files.size () == 0 )\r
                return "";\r
@@ -72,14 +72,14 @@ MingwModuleHandler::GetSourceFilenames ( Module& module )
 }\r
 \r
 string\r
-MingwModuleHandler::GetObjectFilename ( string sourceFilename )\r
+MingwModuleHandler::GetObjectFilename ( const string& sourceFilename ) const\r
 {\r
        return ReplaceExtension ( sourceFilename,\r
                                      ".o" );\r
 }\r
 \r
 string\r
-MingwModuleHandler::GetObjectFilenames ( Module& module )\r
+MingwModuleHandler::GetObjectFilenames ( const Module& module ) const\r
 {\r
        if ( module.files.size () == 0 )\r
                return "";\r
@@ -95,7 +95,7 @@ MingwModuleHandler::GetObjectFilenames ( Module& module )
 }\r
 \r
 string\r
-MingwModuleHandler::GenerateGccDefineParametersFromVector ( vector<Define*> defines )\r
+MingwModuleHandler::GenerateGccDefineParametersFromVector ( const vector<Define*>& defines ) const\r
 {\r
        string parameters;\r
        for (size_t i = 0; i < defines.size (); i++)\r
@@ -115,7 +115,7 @@ MingwModuleHandler::GenerateGccDefineParametersFromVector ( vector<Define*> defi
 }\r
 \r
 string\r
-MingwModuleHandler::GenerateGccDefineParameters ( Module& module )\r
+MingwModuleHandler::GenerateGccDefineParameters ( const Module& module ) const\r
 {\r
        string parameters = GenerateGccDefineParametersFromVector ( module.project->defines );\r
        string s = GenerateGccDefineParametersFromVector ( module.defines );\r
@@ -128,8 +128,8 @@ MingwModuleHandler::GenerateGccDefineParameters ( Module& module )
 }\r
 \r
 string\r
-MingwModuleHandler::ConcatenatePaths ( string path1,\r
-                                          string path2 )\r
+MingwModuleHandler::ConcatenatePaths ( const string& path1,\r
+                                          const string& path2 ) const\r
 {\r
        if ( ( path1.length () == 0 ) || ( path1 == "." ) || ( path1 == "./" ) )\r
                return path2;\r
@@ -140,8 +140,8 @@ MingwModuleHandler::ConcatenatePaths ( string path1,
 }\r
 \r
 string\r
-MingwModuleHandler::GenerateGccIncludeParametersFromVector ( string basePath,\r
-                                                                vector<Include*> includes )\r
+MingwModuleHandler::GenerateGccIncludeParametersFromVector ( const string& basePath,\r
+                                                                const vector<Include*>& includes ) const\r
 {\r
        string parameters;\r
        for (size_t i = 0; i < includes.size (); i++)\r
@@ -157,7 +157,7 @@ MingwModuleHandler::GenerateGccIncludeParametersFromVector ( string basePath,
 }\r
 \r
 string\r
-MingwModuleHandler::GenerateGccIncludeParameters ( Module& module )\r
+MingwModuleHandler::GenerateGccIncludeParameters ( const Module& module ) const\r
 {\r
        string parameters = GenerateGccIncludeParametersFromVector ( ".",\r
                                                                     module.project->includes );\r
@@ -172,7 +172,7 @@ MingwModuleHandler::GenerateGccIncludeParameters ( Module& module )
 }\r
 \r
 string\r
-MingwModuleHandler::GenerateGccParameters ( Module& module )\r
+MingwModuleHandler::GenerateGccParameters ( const Module& module ) const\r
 {\r
        string parameters = GenerateGccDefineParameters ( module );\r
        string s = GenerateGccIncludeParameters ( module );\r
@@ -185,7 +185,7 @@ MingwModuleHandler::GenerateGccParameters ( Module& module )
 }\r
 \r
 void\r
-MingwModuleHandler::GenerateObjectFileTargets ( Module& module )\r
+MingwModuleHandler::GenerateObjectFileTargets ( const Module& module ) const\r
 {\r
        if ( module.files.size () == 0 )\r
                return;\r
@@ -209,7 +209,7 @@ MingwModuleHandler::GenerateObjectFileTargets ( Module& module )
 }\r
 \r
 void\r
-MingwModuleHandler::GenerateArchiveTarget ( Module& module )\r
+MingwModuleHandler::GenerateArchiveTarget ( const Module& module ) const\r
 {\r
        string archiveFilename = GetModuleArchiveFilename ( module );\r
        string sourceFilenames = GetSourceFilenames ( module );\r
@@ -233,19 +233,19 @@ MingwKernelModuleHandler::MingwKernelModuleHandler ( FILE* fMakefile )
 }\r
 \r
 bool\r
-MingwKernelModuleHandler::CanHandleModule ( Module& module )\r
+MingwKernelModuleHandler::CanHandleModule ( const Module& module ) const\r
 {\r
        return module.type == KernelModeDLL;\r
 }\r
 \r
 void\r
-MingwKernelModuleHandler::Process ( Module& module )\r
+MingwKernelModuleHandler::Process ( const Module& module )\r
 {\r
        GenerateKernelModuleTarget ( module );\r
 }\r
 \r
 void\r
-MingwKernelModuleHandler::GenerateKernelModuleTarget ( Module& module )\r
+MingwKernelModuleHandler::GenerateKernelModuleTarget ( const Module& module )\r
 {\r
        string workingDirectory = GetWorkingDirectory ( );\r
        string archiveFilename = GetModuleArchiveFilename ( module );\r
@@ -292,19 +292,19 @@ MingwStaticLibraryModuleHandler::MingwStaticLibraryModuleHandler ( FILE* fMakefi
 }\r
 \r
 bool\r
-MingwStaticLibraryModuleHandler::CanHandleModule ( Module& module )\r
+MingwStaticLibraryModuleHandler::CanHandleModule ( const Module& module ) const\r
 {\r
        return module.type == StaticLibrary;\r
 }\r
 \r
 void\r
-MingwStaticLibraryModuleHandler::Process ( Module& module )\r
+MingwStaticLibraryModuleHandler::Process ( const Module& module )\r
 {\r
        GenerateStaticLibraryModuleTarget ( module );\r
 }\r
 \r
 void\r
-MingwStaticLibraryModuleHandler::GenerateStaticLibraryModuleTarget ( Module& module )\r
+MingwStaticLibraryModuleHandler::GenerateStaticLibraryModuleTarget ( const Module& module )\r
 {\r
        GenerateArchiveTarget ( module );\r
        GenerateObjectFileTargets ( module );\r
index 36e8c8a..b728cfb 100644 (file)
@@ -7,29 +7,29 @@ class MingwModuleHandler
 {\r
 public:\r
        MingwModuleHandler ( FILE* fMakefile );\r
-       virtual bool CanHandleModule ( Module& module ) = 0;\r
-       virtual void Process ( Module& module ) = 0;\r
+       virtual bool CanHandleModule ( const Module& module ) const = 0;\r
+       virtual void Process ( const Module& module ) = 0;\r
 protected:\r
-       std::string MingwModuleHandler::GetWorkingDirectory ();\r
-       std::string ReplaceExtension ( std::string filename,\r
-                                      std::string newExtension );\r
-       std::string GetModuleArchiveFilename ( Module& module );\r
-       std::string GetImportLibraryDependencies ( Module& module );\r
-       std::string GetSourceFilenames ( Module& module );\r
-       std::string GetObjectFilename ( std::string sourceFilename );\r
-       std::string GetObjectFilenames ( Module& module );\r
-       void GenerateObjectFileTargets ( Module& module );\r
-       void GenerateArchiveTarget ( Module& module );\r
+       std::string MingwModuleHandler::GetWorkingDirectory () const;\r
+       std::string ReplaceExtension ( const std::string& filename,\r
+                                      const std::string& newExtension ) const;\r
+       std::string GetModuleArchiveFilename ( const Module& module ) const;\r
+       std::string GetImportLibraryDependencies ( const Module& module ) const;\r
+       std::string GetSourceFilenames ( const Module& module ) const;\r
+       std::string GetObjectFilename ( const std::string& sourceFilename ) const;\r
+       std::string GetObjectFilenames ( const Module& module ) const;\r
+       void GenerateObjectFileTargets ( const Module& module ) const;\r
+       void GenerateArchiveTarget ( const Module& module ) const;\r
        FILE* fMakefile;\r
 private:\r
-       std::string ConcatenatePaths ( std::string path1,\r
-                                      std::string path2 );\r
-       std::string GenerateGccDefineParametersFromVector ( std::vector<Define*> defines );\r
-       std::string GenerateGccDefineParameters ( Module& module );\r
-       std::string GenerateGccIncludeParametersFromVector ( std::string basePath,\r
-                                                            std::vector<Include*> includes );\r
-       std::string GenerateGccIncludeParameters ( Module& module );\r
-       std::string GenerateGccParameters ( Module& module );\r
+       std::string ConcatenatePaths ( const std::string& path1,\r
+                                      const std::string& path2 ) const;\r
+       std::string GenerateGccDefineParametersFromVector ( const std::vector<Define*>& defines ) const;\r
+       std::string GenerateGccDefineParameters ( const Module& module ) const;\r
+       std::string GenerateGccIncludeParametersFromVector ( const std::string& basePath,\r
+                                                            const std::vector<Include*>& includes ) const;\r
+       std::string GenerateGccIncludeParameters ( const Module& module ) const;\r
+       std::string GenerateGccParameters ( const Module& module ) const;\r
 };\r
 \r
 \r
@@ -37,10 +37,10 @@ class MingwKernelModuleHandler : public MingwModuleHandler
 {\r
 public:\r
        MingwKernelModuleHandler ( FILE* fMakefile );\r
-       virtual bool CanHandleModule ( Module& module );\r
-       virtual void Process ( Module& module );\r
+       virtual bool CanHandleModule ( const Module& module ) const;\r
+       virtual void Process ( const Module& module );\r
 private:\r
-       void GenerateKernelModuleTarget ( Module& module );\r
+       void GenerateKernelModuleTarget ( const Module& module );\r
 };\r
 \r
 \r
@@ -48,10 +48,10 @@ class MingwStaticLibraryModuleHandler : public MingwModuleHandler
 {\r
 public:\r
        MingwStaticLibraryModuleHandler ( FILE* fMakefile );\r
-       virtual bool CanHandleModule ( Module& module );\r
-       virtual void Process ( Module& module );\r
+       virtual bool CanHandleModule ( const Module& module ) const;\r
+       virtual void Process ( const Module& module );\r
 private:\r
-       void GenerateStaticLibraryModuleTarget ( Module& module );\r
+       void GenerateStaticLibraryModuleTarget ( const Module& module );\r
 };\r
 \r
 #endif /* MINGW_MODULEHANDLER_H */\r
index cb5dae1..de767b3 100644 (file)
@@ -118,7 +118,7 @@ Module::GetDefaultModuleExtension ()
 }\r
 \r
 string\r
-Module::GetPath ()\r
+Module::GetPath () const\r
 {\r
        return FixSeparator (path) + CSEP + name + extension;\r
 }\r
index 26c099e..22285b0 100644 (file)
@@ -77,7 +77,7 @@ public:
                 const std::string& modulePath );\r
        ~Module ();\r
        ModuleType GetModuleType (const XMLAttribute& attribute );\r
-       std::string GetPath ();\r
+       std::string GetPath () const;\r
        void ProcessXML ( const XMLElement& e, const std::string& path );\r
 private:\r
        std::string GetDefaultModuleExtension ();\r