X-Git-Url: http://gitweb.hachti.de/?a=blobdiff_plain;f=pc-tools%2Fldc2%2Fsrc%2Fconfiguration_manager.hh;h=e2f056f4b9be2daf656bcb9b6a1f9c4e1c116450;hb=16b4d690e1a97837a883abe60d30b5cd032be935;hp=7849edf13cfdd46a827bae03722605a646a9d8b3;hpb=040533c5d1dece81aaaf2194b5ea24d908bea481;p=h316.git diff --git a/pc-tools/ldc2/src/configuration_manager.hh b/pc-tools/ldc2/src/configuration_manager.hh index 7849edf..e2f056f 100644 --- a/pc-tools/ldc2/src/configuration_manager.hh +++ b/pc-tools/ldc2/src/configuration_manager.hh @@ -14,71 +14,123 @@ using namespace std; * Additionally, it is able to interpret configuration files. * Usage:\n * - Create an instance. - * - Add Parameters/switches with add_param(). + * - Add Parameters/switches with add_option_*(). * - Add Arguments with add_argument(). * - Call read_args() with your main routine's arguments. * The vector returned by read_args() contains all error * messages. When it's empty, everything is fine! * - Call get_help() if you want nice formatted help output. * (You want!!!) - * Sould be easy to use..... Enjoy. + * Sould be easy to use.... */ -class argument_reader{ +class configuration_manager{ -public: - argument_reader(string name); - - void add_param (string shortname, - string longname, - string description, - int *status, - bool allow_commandline=true, - bool allow_config_file=true, - string *target=NULL, - string placeholder=string("") - ); - - vector read_args(int argc, char ** args); - vector read_file(string filename); - - void get_help (vector & target); - vector get_help(); - - void add_argument(string placeholder, string description, int * status, string * target); - -private: +protected: // Types /*! - *\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, - string * target=NULL, string placeholder=string("")); + opt_switch_t (const string & shortname, + const string & longname, + const string & description, + int * status, + const bool & allow_commandline=true, + const bool & allow_config_file=true); 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 an option value */ - class arg_t{ + class opt_value_t{ public: - arg_t (string placeholder,string description, - int * status, string * target); + opt_value_t (const string & shortname, + const string & longname, + const string & description, + int * status, + string * target, + const string & placeholder=string(""), + const bool & allow_commandline=true, + const bool & allow_config_file=true); + string shortname; + string longname; int * status; string * target; string description; string placeholder; + bool allow_conffile; + bool allow_cmdline; }; - vectoropt_v; - vectorarg_v; + + /*! + *\brief Container for a commandline argument + */ + class cmd_arg_t{ + public: + cmd_arg_t (const string & placeholder, + const string & description, + int * status, + string * target); + int * status; + string * target; + string description; + string placeholder; + }; + +public: // Methods + + configuration_manager(string name); + + void add_option_value (const string & shortname, + const string & longname, + const string & description, + int *status, + string *target=NULL, + const string & placeholder=string(""), + const bool & allow_commandline=true, + const bool & allow_config_file=true + ); + + void add_option_switch (const string & shortname, + const string & longname, + const string & description, + int *status, + const bool & allow_commandline=true, + const bool & allow_config_file=true + ); + + void add_argument (const string & description, + int *status, + string *target=NULL, + const string & placeholder=string("") + ); + + vector read_args(int argc, char ** args); + vector read_file(string filename); + + void get_help (vector & target); + vector get_help(); + +protected: // members + vectoroption_switches; + vectoroption_values; + vectorcmd_args; string app_name; -}; // class argument_reader +protected: // methods + string analyse_string(const string & line); + bool analyse_bool(const string & data); + bool analyse_bool_false(const string & data); +}; // class configuration_manager #endif +