BALL  1.4.79
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
commandlineParser.h
Go to the documentation of this file.
1 #ifndef BALL_FORMAT_COMMANDLINEPARSER_H
2 #define BALL_FORMAT_COMMANDLINEPARSER_H
3 
4 #ifndef BALL_DATATYPE_OPTIONS_H
5 # include <BALL/DATATYPE/options.h>
6 #endif
7 
8 #ifndef BALL_DATATYPE_STRING_H
9 # include <BALL/DATATYPE/string.h>
10 #endif
11 
12 #ifndef BALL_FORMAT_PARAMFILE_H
13 # include <BALL/FORMAT/paramFile.h>
14 #endif
15 
16 #include <map>
17 #include <set>
18 
19 namespace BALL
20 {
43  {
44  public:
45  CommandlineParser(String tool_name, String tool_description, String tool_version, String build_date, String category="");
46 
48  void setToolManual(const String& manual);
49 
50  static const String NOT_FOUND;
51  static const list<String> EMTPY_LIST;
52 
53  void registerParameter(String name, String description, ParameterType type, bool mandatory = false, String default_value = "", bool hidden = false);
54 
55  void registerFlag(String name, String description, bool default_gui_value = false);
56 
57  void registerAdvancedParameters(Options& options);
58 
60  void setParameterRestrictions(String par_name, double min_value, double max_value);
61 
63  void setParameterRestrictions(String par_name, list<String>& allowed_values);
64 
74  void setOutputFormatSource(String output_parname, String input_parname);
75 
80  void setSupportedFormats(String par_name, String supported_formats);
81 
84  void parse(int argc, char* argv[]);
85 
88  void copyAdvancedParametersToOptions(Options& options);
89 
95  const String& get(String name);
96 
99  bool has(String name);
100 
105  const list<String>& getList(String name);
106 
111  void printHelp(std::set<String>* parameter_names = 0, bool show_manual = true);
112 
113  void printToolInfo();
114 
115  const String& getStartTime();
116 
119  const String& getStartCommand();
120 
121  private:
122 
123  void replaceExcapedCharacters_(String& parameter_value);
124  void checkAndRegisterParameter(String name, String description, ParameterType type, bool mandatory = false, String default_value = "", bool perform_check = true, bool hidden=false);
125  void checkAndRegisterFlag(String name, String description, bool default_gui_value = false, bool perform_check = true);
126  void validateRegisteredFilesHaveFormats();
127 
129  void checkParameterName(const String& name, const bool perform_check = true);
130 
132  std::set<String> reserved_params_;
133 
135  std::list<std::pair<String, String> > excaped_chars_;
136  std::map<String, list<String> > parameter_map_;
137  std::map<String, ParameterDescription> registered_parameters_;
138 
139  std::map<String, ParameterDescription> registered_flags_;
140  typedef std::map<String, ParameterDescription>::iterator MapIterator;
141  std::list<MapIterator> original_parameter_order_;
142  std::list<MapIterator> original_flag_order_;
143  Size max_parname_length_;
144  Size max_flagname_length_;
145  String tool_name_;
146  String tool_description_;
147  String tool_version_;
148  String build_date_;
149  String hostname_;
150  String start_time_;
151  String tool_manual_;
152  String start_command_;
153  String tool_category_;
154  };
155 }
156 
157 #endif // BALL_FORMAT_COMMANDLINEPARSER_H
static const String NOT_FOUND
#define BALL_EXPORT
Definition: COMMON/global.h:50
static const list< String > EMTPY_LIST