X-Git-Url: http://gitweb.hachti.de/?a=blobdiff_plain;f=pc-tools%2Fldc2%2Fsrc%2Fconfiguration_manager.hh;h=ffd77218a361074c40f832b325044858d20b9b6e;hb=34ce17ffec005c5cca84304997e9ccfb6a3f593e;hp=d88d3dd7959bad57227dbe6f4a37d959d2d78d14;hpb=ad324d29d885b9af1608a6e9c1f978bdcd202eb7;p=h316.git diff --git a/pc-tools/ldc2/src/configuration_manager.hh b/pc-tools/ldc2/src/configuration_manager.hh index d88d3dd..ffd7721 100644 --- a/pc-tools/ldc2/src/configuration_manager.hh +++ b/pc-tools/ldc2/src/configuration_manager.hh @@ -7,10 +7,11 @@ using namespace std; /*! - *\brief Hachti's wonderful commandline parser. + *\brief Hachti's even more wonderful configuration manager. * * This class is designed to do all the work with the parameters passed to * the main() routine of a program.\n + * Additionally, it is able to interpret configuration files. * Usage:\n * - Create an instance. * - Add Parameters/switches with add_param(). @@ -22,33 +23,49 @@ using namespace std; * (You want!!!) * Sould be easy to use..... Enjoy. */ -class argument_reader{ +class configuration_manager{ public: - argument_reader(string name); + configuration_manager(string name); - void add_param (string shortname, - string longname, - string description, - int *status, - string *target=NULL, - string placeholder=string("") - ); + void add_option_switch (string shortname, + string longname, + string description, + int *status, + bool allow_commandline=true, + bool allow_config_file=true + ); + + void add_option_value (string shortname, + string longname, + string description, + int *status, + bool allow_commandline=true, + bool allow_config_file=true, + string *target=NULL, + string placeholder=string("") + ); + void add_argument (string longname, + string description, + int *status, + string *target=NULL, + string placeholder=string("") + ); + vector read_args(int argc, char ** args); + vector read_file(string filename); - void get_help(vector & target); + void get_help (vector & target); vector get_help(); - void add_argument(string placeholder, string description, int * status, string * target); - private: /*! - *\brief Container for one command line option. + *\brief Container for an option switch */ - class opt_t{ + class opt_switch_t{ public: - opt_t (string shortname, string longname,string description, int * status, + opt_switch_t (string shortname, string longname,string description, int * status string * target=NULL, string placeholder=string("")); string shortname; string longname; @@ -57,11 +74,27 @@ private: string description; string placeholder; }; + /*! + *\brief Container for an option value + */ +class opt_value_t{ + public: + switch_t (string shortname, string longname,string description, int * status + string * target=NULL, string placeholder=string("")); + string shortname; + string longname; + int * status; + string * target; + string description; + string placeholder; + bool allow_conffile; + bool allow_cmdline; +}; /*! - *\brief Container for one command line argument. + *\brief Container for a commandline argument */ - class arg_t{ + class cmd_arg_t{ public: arg_t (string placeholder,string description, int * status, string * target); @@ -70,11 +103,13 @@ private: string description; string placeholder; }; - vectoropt_v; - vectorarg_v; + + vectoroption_switches; + vectoroption_values; + vectorcmd_args; string app_name; -}; // class argument_reader +}; // class configuration_manager #endif