Author: timotei
Date: Sat Jun 11 18:25:49 2011
New Revision: 49841

URL: http://svn.gna.org/viewcvs/wesnoth?rev=49841&view=rev
Log:
Refactor a bit the '--preprocess' code to benefit
from the new command line processing

Modified:
    trunk/src/game.cpp

Modified: trunk/src/game.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/game.cpp?rev=49841&r1=49840&r2=49841&view=diff
==============================================================================
--- trunk/src/game.cpp (original)
+++ trunk/src/game.cpp Sat Jun 11 18:25:49 2011
@@ -98,21 +98,11 @@
        gzip_codec(input_file, output_file, false);
 }
 
-struct preprocess_options
-{
-public:
-       preprocess_options(): output_macros_path_("false"), input_macros_()
-       {
-       }
-       std::string output_macros_path_;
-       preproc_map input_macros_;
-};
-
 /** Process commandline-arguments */
 static int process_command_args(const commandline_options& cmdline_opts) {
-       preprocess_options preproc;
 
        // Options that don't change behaviour based on any others should be 
checked alphabetically below.
+
        if(cmdline_opts.config_dir) {
                set_preferences_dir(*cmdline_opts.config_dir);
        }
@@ -183,36 +173,6 @@
                std::cout <<  game_config::path << "\n";
                return 0;
        }
-       if(cmdline_opts.preprocess_input_macros) {
-               std::string file = *cmdline_opts.preprocess_input_macros;
-               if (file_exists(file) == false)
-               {
-                       std::cerr << "please specify an existing file. File "<< 
file <<" doesn't exist.\n";
-                       return 1;
-               }
-
-               std::cerr << SDL_GetTicks() << " Reading cached defines from: " 
<< file << "\n";
-
-               config cfg;
-               std::string error_log;
-               scoped_istream stream = istream_file(file);
-               read(cfg, *stream);
-
-               int read = 0;
-               // use static preproc_define::read_pair(config) to make a object
-               foreach (const config::any_child &value, 
cfg.all_children_range()) {
-                       const preproc_map::value_type def = 
preproc_define::read_pair(value.cfg);
-                       preproc.input_macros_[def.first] = def.second;
-                       ++read;
-               }
-               std::cerr << SDL_GetTicks() << " Read " << read << " 
defines.\n";
-       }
-       if(cmdline_opts.preprocess_output_macros) {
-               if (cmdline_opts.preprocess_output_macros->empty())
-                       preproc.output_macros_path_ = "true";
-               else
-                       preproc.output_macros_path_ = 
*cmdline_opts.preprocess_output_macros;
-       }
        if(cmdline_opts.rng_seed) {
                srand(*cmdline_opts.rng_seed);
        }
@@ -227,8 +187,43 @@
 
        // Options changing their behaviour dependant on some others should be 
checked below.
 
-       //TODO should be rewritten so that preprocess_input_macros and 
preprocess_output_macros are used inside, not before
-       if (cmdline_opts.preprocess) {
+       if ( cmdline_opts.preprocess ) {
+
+               std::string output_macros_file;
+               preproc_map input_macros;
+
+               if( cmdline_opts.preprocess_input_macros ) {
+                       std::string file = 
*cmdline_opts.preprocess_input_macros;
+                       if ( file_exists( file ) == false )
+                       {
+                               std::cerr << "please specify an existing file. 
File "<< file <<" doesn't exist.\n";
+                               return 1;
+                       }
+
+                       std::cerr << SDL_GetTicks() << " Reading cached defines 
from: " << file << "\n";
+
+                       config cfg;
+                       std::string error_log;
+                       scoped_istream stream = istream_file( file );
+                       read( cfg, *stream );
+
+                       int read = 0;
+
+                       // use static preproc_define::read_pair(config) to make 
a object
+                       foreach ( const config::any_child &value, 
cfg.all_children_range() ) {
+                               const preproc_map::value_type def = 
preproc_define::read_pair( value.cfg );
+                               input_macros[def.first] = def.second;
+                               ++read;
+                       }
+                       std::cerr << SDL_GetTicks() << " Read " << read << " 
defines.\n";
+               }
+
+               if( cmdline_opts.preprocess_output_macros ) {
+
+                       if ( cmdline_opts.preprocess_output_macros->empty() == 
false )
+                               output_macros_file = 
*cmdline_opts.preprocess_output_macros;
+               }
+
                const std::string 
resourceToProcess(*cmdline_opts.preprocess_path);
                const std::string targetDir(*cmdline_opts.preprocess_target);
 
@@ -237,22 +232,21 @@
                bool skipCore = false;
                bool skipTerrainGFX = false;
                // the 'core_defines_map' is the one got from data/core macros
-               preproc_map defines_map(preproc.input_macros_);
+               preproc_map defines_map( input_macros );
                std::string error_log;
 
-               if (cmdline_opts.preprocess_defines)
-               {
+               if ( cmdline_opts.preprocess_defines ) {
+
                        // add the specified defines
-                       foreach (const std::string &define, 
*cmdline_opts.preprocess_defines)
-                       {
+                       foreach ( const std::string &define, 
*cmdline_opts.preprocess_defines ) {
                                if (define.empty()){
                                        std::cerr << "empty define supplied\n";
                                        continue;
                                }
 
-                               LOG_PREPROC<<"adding define: "<< define<<'\n';
-                               defines_map.insert(std::make_pair(define,
-                                       preproc_define(define)));
+                               LOG_PREPROC << "adding define: " << define << 
'\n';
+                               defines_map.insert(std::make_pair(define, 
preproc_define(define)));
+
                                if (define == "SKIP_CORE")
                                {
                                        std::cerr << "'SKIP_CORE' defined.\n";
@@ -269,8 +263,7 @@
                std::cerr << "added " << defines_map.size() << " defines.\n";
 
                // preprocess core macros first if we don't skip the core
-               if (skipCore == false)
-               {
+               if (skipCore == false) {
                        std::cerr << "preprocessing common macros from 
'data/core' ...\n";
 
                        // process each folder explicitly to gain speed
@@ -278,7 +271,7 @@
                        if (skipTerrainGFX == false)
                                preprocess_resource(game_config::path + 
"/data/core/terrain-graphics",&defines_map);
 
-                       std::cerr << "acquired " << (defines_map.size() - 
preproc.input_macros_.size())
+                       std::cerr << "acquired " << (defines_map.size() - 
input_macros.size())
                                << " 'data/core' defines.\n";
                }
                else
@@ -288,14 +281,14 @@
                std::cerr << "preprocessing specified resource: "
                                        << resourceToProcess << " ...\n";
                preprocess_resource(resourceToProcess, &defines_map, true,true, 
targetDir);
-               std::cerr << "acquired " << (defines_map.size() - 
preproc.input_macros_.size())
+               std::cerr << "acquired " << (defines_map.size() - 
input_macros.size())
                                        << " total defines.\n";
 
-               if (preproc.output_macros_path_ != "false")
+               if ( output_macros_file.empty() == false )
                {
                        std::string outputPath = targetDir + "/_MACROS_.cfg";
-                       if (preproc.output_macros_path_ != "true")
-                               outputPath = preproc.output_macros_path_;
+                       if ( output_macros_file.empty() == false )
+                               outputPath = output_macros_file;
 
                        std::cerr << "writing '" << outputPath << "' with "
                                                << defines_map.size() << " 
defines.\n";


_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits

Reply via email to