Created new command_options object,

...which will be responsible for commandline parsing. Introduces
Boost.Program_options dependency.
This commit is contained in:
Lukasz Dobrogowski 2011-05-29 17:31:07 +00:00
parent 02327bd9eb
commit 91435494d8
6 changed files with 223 additions and 1 deletions

View file

@ -19,7 +19,7 @@ set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
find_package(SDL 1.2.7 REQUIRED)
find_package(Boost 1.35 REQUIRED COMPONENTS iostreams regex)
find_package(Boost 1.35 REQUIRED COMPONENTS iostreams program_options regex)
# no, gettext executables are not required when NLS is deactivated
find_package(Gettext)

View file

@ -304,6 +304,7 @@ if env["prereqs"]:
have_client_prereqs = have_server_prereqs and \
conf.CheckPango("cairo") and \
conf.CheckPKG("fontconfig") and \
conf.CheckBoost("program_options", require_version="1.35.0") and \
conf.CheckBoost("regex", require_version = "1.35.0") and \
conf.CheckSDL("SDL_ttf", require_version = "2.0.8") and \
conf.CheckSDL("SDL_mixer", require_version = '1.2.0') and \

View file

@ -336,6 +336,7 @@ set(wesnoth-main_SRC
attack_prediction.cpp
attack_prediction_display.cpp
callable_objects.cpp
commandline_options.cpp
config_cache.cpp
controller_base.cpp
dialogs.cpp

View file

@ -198,6 +198,7 @@ wesnoth_sources = Split("""
attack_prediction.cpp
attack_prediction_display.cpp
callable_objects.cpp
commandline_options.cpp
config_cache.cpp
controller_base.cpp
dialogs.cpp

View file

@ -0,0 +1,76 @@
/* $Id$ */
/*
Copyright (C) 2011 by Lukasz Dobrogowski <lukasz.dobrogowski@gmail.com>
Part of the Battle for Wesnoth Project http://www.wesnoth.org/
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY.
See the COPYING file for more details.
*/
#include "commandline_options.hpp"
commandline_options::commandline_options ( int /* argc*/, char** /*argv*/ ) :
bpp(),
campaign(),
campaign_difficulty(),
campaign_scenario(),
clock(false),
config_path(false),
config_dir(),
data_dir(),
debug(false),
#ifdef DEBUG_WINDOW_LAYOUT_GRAPHS
debug_dot_level(),
debug_dot_domain(),
#endif
editor(),
fps(false),
fullscreen(false),
gunzip(),
gzip(),
log(),
load(),
logdomains(),
multiplayer(false),
max_fps(),
nocache(false),
nodelay(false),
nogui(false),
nomusic(false),
nosound(false),
new_storyscreens(false),
new_syntax(false),
new_widgets(false),
path(false),
preprocess(false),
preprocess_defines(),
preprocess_input_macros(),
preprocess_output_macros(),
preprocess_path(),
preprocess_target(),
proxy(false),
proxy_address(),
proxy_password(),
proxy_port(),
proxy_user(),
resolution(),
rng_seed(),
server(),
screenshot(false),
screenshot_map_file(),
screenshot_output_file(),
smallgui(false),
test(false),
validcache(false),
version(false),
windowed(false),
with_replay(false)
{
}

143
src/commandline_options.hpp Normal file
View file

@ -0,0 +1,143 @@
/* $Id$ */
/*
Copyright (C) 2011 by Lukasz Dobrogowski <lukasz.dobrogowski@gmail.com>
Part of the Battle for Wesnoth Project http://www.wesnoth.org/
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY.
See the COPYING file for more details.
*/
#ifndef COMMANDLINE_OPTIONS_HPP_INCLUDED
#define COMMANDLINE_OPTIONS_HPP_INCLUDED
#include <boost/optional.hpp>
#include <boost/program_options.hpp>
#include <string>
#include <utility>
#include <vector>
class commandline_options
{
public:
commandline_options(int argc, char **argv);
/// BitsPerPixel specified by --bpp option.
boost::optional<int> bpp;
/// Non-empty if --campaign was given on the command line. ID of the campaign we want to start.
boost::optional<std::string> campaign;
/// Non-empty if --campaign-difficulty was given on the command line. Numerical difficulty of the campaign to be played. Dependant on --campaign.
boost::optional<int> campaign_difficulty;
/// Non-empty if --campaign-scenario was given on the command line. Chooses starting scenario in the campaign to be played. Dependant on --campaign.
boost::optional<std::string> campaign_scenario;
/// True if --clock was given on the command line. Enables
bool clock;
/// True if --config-path was given on the command line. Prints path to user config directory and exits.
bool config_path;
/// Non-empty if --config-dir was given on the command line. Sets the config dir to the specified one.
boost::optional<std::string> config_dir;
/// Non-empty if --config-dir was given on the command line. Sets the config dir to the specified one.
boost::optional<std::string> data_dir;
/// True if --debug was given on the command line. Enables debug mode.
bool debug;
#ifdef DEBUG_WINDOW_LAYOUT_GRAPHS
/// Non-empty if --debug-dot-level was given on the command line.
boost::optional<std::string> debug_dot_level;
/// Non-empty if --debug-dot-domain was given on the command line.
boost::optional<std::string> debug_dot_domain;
#endif
/// Non-empty if --editor was given on the command line. Goes directly into editor. If string is longer than 0, it contains path to the file to edit.
boost::optional<std::string> editor;
/// True if --fps was given on the command line. Shows number of fps.
bool fps;
/// True if --fullscreen was given on the command line. Starts Wesnoth in fullscreen mode.
bool fullscreen;
/// Non-empty if --gunzip was given on the command line. Uncompresses a .gz file and exits.
boost::optional<std::string> gunzip;
/// Non-empty if --gzip was given on the command line. Compresses a file to .gz and exits.
boost::optional<std::string> gzip;
/// Contains parsed arguments of --log-* (e.g. --log-debug).
/// Vector of pairs (severity, log domain).
boost::optional<std::vector<std::pair<int, std::string> > > log;
/// Non-empty if --load was given on the command line. Savegame specified to load after start.
boost::optional<std::string> load;
/// Non-empty if --logdomains was given on the command line. Prints possible logdomains filtered by given string and exits.
boost::optional<std::string> logdomains;
/// True if --multiplayer was given on the command line. Goes directly into multiplayer mode.
bool multiplayer;
/// Max FPS specified by --max-fps option.
boost::optional<int> max_fps;
/// True if --nocache was given on the command line. Disables cache usage.
bool nocache;
/// True if --nodelay was given on the command line.
bool nodelay;
/// True if --nogui was given on the command line. Disables GUI.
bool nogui;
/// True if --nomusic was given on the command line. Disables music.
bool nomusic;
/// True if --nosound was given on the command line. Disables sound.
bool nosound;
/// True if --new-storyscreens was given on the command line. Hidden option to help testing the work-in-progress new storyscreen code.
bool new_storyscreens;
/// True if --new-syntax was given on the command line. Does magic.
bool new_syntax;
/// True if --new-widgets was given on the command line. Hidden option to enable the new widget toolkit.
bool new_widgets;
/// True if --path was given on the command line. Prints the path to data directory and exits.
bool path;
/// True if --preprocess was given on the command line. Starts Wesnoth in preprocessor-only mode.
bool preprocess;
/// Defines that were given to the --preprocess option.
boost::optional<std::vector<std::string> > preprocess_defines;
/// Non-empty if --preprocess-input-macros was given on the command line. Specifies a file that contains [preproc_define]s to be included before preprocessing. Dependant on --preprocess.
boost::optional<std::string> preprocess_input_macros;
/// Non-empty if --preprocess-output-macros was given on the command line. Outputs all preprocessed macros to the specified file. Dependant on --preprocess.
boost::optional<std::string> preprocess_output_macros;
/// Path to parse that was given to the --preprocess option.
boost::optional<std::string> preprocess_path;
/// Target (output) path tha was given to the --preprocess option.
boost::optional<std::string> preprocess_target;
/// True if --proxy was given on the command line. Enables proxy mode.
bool proxy;
/// Non-empty if --proxy-address was given on the command line.
boost::optional<std::string> proxy_address;
/// Non-empty if --proxy-password was given on the command line.
boost::optional<std::string> proxy_password;
/// Non-empty if --proxy-port was given on the command line.
boost::optional<std::string> proxy_port;
/// Non-empty if --proxy-user was given on the command line.
boost::optional<std::string> proxy_user;
/// Pair of AxB values specified after --resolution. Changes Wesnoth resolution.
boost::optional<std::pair<int,int> > resolution;
/// RNG seed specified by --rng-seed option. Initializes RNG with given seed.
boost::optional<int> rng_seed;
/// Non-empty if --server was given on the command line. Connects Wesnoth to specified server. If no server was specified afterwards, contains an empty string.
boost::optional<std::string> server;
/// True if --screenshot was given on the command line. Starts Wesnoth in screenshot mode.
bool screenshot;
/// Map file to make a screenshot of. First parameter given after --screenshot.
boost::optional<std::string> screenshot_map_file;
/// Output file to put screenshot in. Second parameter given after --screenshot.
boost::optional<std::string> screenshot_output_file;
/// True if --smallgui was given on the command line. Makes Wesnoth use small gui layout.
bool smallgui;
/// True if --test was given on the command line. Goes directly into test mode.
bool test;
/// True if --validcache was given on the command line. Makes Wesnoth assume the cache is valid.
bool validcache;
/// True if --version was given on the command line. Prints version and exits.
bool version;
/// True if --windowed was given on the command line. Starts Wesnoth in windowed mode.
bool windowed;
/// True if --with-replay was given on the command line. Shows replay of the loaded file.
bool with_replay;
private:
};
#endif