+/******************************************************************************
+ *
+ * LDC2 source code
+ *
+ * $Date: 2007/03/26 01:00:38 $
+ * $Author: hachti $
+ *
+ * $Log: configuration_manager.hh,v $
+ * Revision 2.0 2007/03/26 01:00:38 hachti
+ * *** empty log message ***
+ *
+ *
+ ******************************************************************************/
+
#ifndef ARGUMENT_READER_H
#define ARGUMENT_READER_H
* 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 configuration_manager{
-public:
- configuration_manager(string name);
-
- 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("<string>")
- );
-
- void add_argument (string longname,
- string description,
- int *status,
- string *target=NULL,
- string placeholder=string("<string>")
- );
-
- vector<string> read_args(int argc, char ** args);
- vector<string> read_file(string filename);
-
- void get_help (vector<string> & target);
- vector<string> get_help();
-
-private:
+protected: // Types
/*!
*\brief Container for an option switch
*/
- class opt_switch_t{
+ class opt_switch_t{
public:
- opt_switch_t (string shortname, string longname,string description, int * status
- string * target=NULL, string placeholder=string("<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 an option value
*/
-class opt_value_t{
+ class opt_value_t{
public:
- switch_t (string shortname, string longname,string description, int * status
- string * target=NULL, string placeholder=string("<string>"));
- string shortname;
- string longname;
- int * status;
- string * target;
- string description;
- string placeholder;
- bool allow_conffile;
- bool allow_cmdline;
-};
-
+ opt_value_t (const string & shortname,
+ const string & longname,
+ const string & description,
+ int * status,
+ string * target,
+ const string & placeholder=string("<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;
+ };
+
/*!
*\brief Container for a commandline argument
*/
class cmd_arg_t{
public:
- arg_t (string placeholder,string description,
- int * status, string * target);
+ 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("<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("<string>")
+ );
+
+ vector<string> read_args(int argc, char ** args);
+ vector<string> read_file(string filename);
+
+ void get_help (vector<string> & target);
+ vector<string> get_help();
+
+protected: // members
vector<opt_switch_t>option_switches;
vector<opt_value_t>option_values;
vector<cmd_arg_t>cmd_args;
string app_name;
+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
+