*** empty log message ***
[h316.git] / pc-tools / ldc2 / src / configuration_manager.hh
index ffd77218a361074c40f832b325044858d20b9b6e..60a215d05725523ae350b870b1d5827b1813d01f 100644 (file)
@@ -14,102 +14,122 @@ 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 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);
 }; // class configuration_manager
 
 
 #endif
+