BALL  1.5.0
commandlineParser.h
Go to the documentation of this file.
1 #ifndef BALL_FORMAT_COMMANDLINEPARSER_H
2 #define BALL_FORMAT_COMMANDLINEPARSER_H
3 
5 #include <BALL/DATATYPE/string.h>
7 
8 #include <map>
9 #include <set>
10 
11 
12 namespace BALL
13 {
39  {
40  public:
41  CommandlineParser(String tool_name, String tool_description, String tool_version, String build_date, String category="");
42 
44  void setToolManual(const String& manual);
45 
46  static const String NOT_FOUND;
47  static const list<String> EMTPY_LIST;
48 
49  void registerMandatoryIntegerParameter(const String& name, const String& description);
50 
51  void registerMandatoryIntegerListParameter(const String& name, const String& description);
52 
53  void registerMandatoryDoubleParameter(const String& name, const String& description);
54 
55  void registerMandatoryDoubleListParameter(const String& name, const String& description);
56 
57  void registerMandatoryStringParameter(const String& name, const String& description);
58 
59  void registerMandatoryStringListParameter(const String& name, const String& description);
60 
61  void registerMandatoryInputFile(const String& name, const String& description);
62 
63  void registerMandatoryOutputFile(const String& name, const String& description);
64 
65  void registerMandatoryInputFileList(const String& name, const String& description);
66 
67  void registerMandatoryOutputFileList(const String& name, const String& description);
68 
69  void registerMandatoryGalaxyOutputFolder(const String& name, const String& description);
70 
71  void registerMandatoryGalaxyOutputId(const String& name, const String& description);
72 
73  void registerOptionalIntegerParameter(const String& name, const String& description, int default_value = 0);
74 
75  void registerOptionalIntegerListParameter(const String& name, const String& description, const std::vector<int>& default_values = vector<int>());
76 
77  void registerOptionalDoubleParameter(const String& name, const String& description, double default_value = 0.0);
78 
79  void registerOptionalDoubleListParameter(const String& name, const String& description, const std::vector<double>& default_values = vector<double>());
80 
81  void registerOptionalStringParameter(const String& name, const String& description, const String& default_value = "");
82 
83  void registerOptionalStringListParameter(const String& name, const String& description, const std::vector<String>& default_values = vector<String>());
84 
85  void registerOptionalInputFile(const String& name, const String& description, const String& default_value = "");
86 
87  void registerOptionalOutputFile(const String& name, const String& description, const String& default_value = "");
88 
89  void registerOptionalInputFileList(const String& name, const String& description, const std::vector<String>& default_values = vector<String>());
90 
91  void registerOptionalOutputFileList(const String& name, const String& description, const std::vector<String>& default_values = vector<String>());
92 
93  void registerOptionalGalaxyOutputFolder(const String& name, const String& description, const String& default_value = "");
94 
95  void registerOptionalGalaxyOutputId(const String& name, const String& description, const String& default_value = "");
96 
97  void registerFlag(String name, String description, bool default_gui_value = false, bool hidden = false);
98 
100 
101  // exclude parameter from showing in help mode e.g. galaxy specific multi-output parameter
103 
105 
107  void setParameterRestrictions(String category, String par_name, double min_value, double max_value);
108  void setParameterRestrictions(String par_name, double min_value, double max_value);
109 
111  void setParameterRestrictions(String category, String par_name, int min_value, int max_value);
112  void setParameterRestrictions(String par_name, int min_value, int max_value);
113 
115  void setParameterRestrictions(String category, String par_name, list<String>& allowed_values);
116  void setParameterRestrictions(String par_name, list<String>& allowed_values);
117 
121  void setSupportedFormats(String category, String par_name, String supported_formats);
122  void setSupportedFormats(String par_name, String supported_formats);
123 
124 
127  void parse(int argc, char* argv[]);
128 
132 
138  const String& get(String name);
139 
142  bool has(String name);
143 
148  const list<String>& getList(String name);
149 
154  void printHelp(const std::set<String>& parameter_names = std::set<String>(), bool show_manual = true);
155 
157 
159 
163 
164  private:
165 
166  void assertParamterTypeIsNotNumeric(ParamFile::ParameterType type);
167 
168  void replaceEscapedCharacters_(String& parameter_value);
169 
170  void checkAndRegisterParameter(String name, String description, ParamFile::ParameterType type, bool mandatory = false, String default_value = "", bool perform_check = true);
171 
172  void checkAndRegisterFlag(String name, String description, bool default_gui_value = false, bool perform_check = true, bool hidden=false);
173 
174  void validateRegisteredFilesHaveFormats();
175 
177  void checkParameterName(const String& name, const bool perform_check = true);
178 
180  std::set<String> reserved_params_;
181 
183  std::list<std::pair<String, String> > escaped_chars_;
184  std::map<String, list<String> > parameter_map_;
185  std::map<String, ParamFile::ParameterDescription> registered_parameters_;
186 
187  std::map<String, ParamFile::ParameterDescription> registered_flags_;
188  typedef std::map<String, ParamFile::ParameterDescription>::iterator MapIterator;
189  std::list<MapIterator> original_parameter_order_;
190  std::list<MapIterator> original_flag_order_;
191  Size max_parname_length_;
192  Size max_flagname_length_;
193  String tool_name_;
194  String tool_description_;
195  String tool_version_;
196  String build_date_;
197  String hostname_;
198  String start_time_;
199  String tool_manual_;
200  String start_command_;
201  String tool_category_;
202  };
203 }
204 
205 #endif // BALL_FORMAT_COMMANDLINEPARSER_H
Definition: constants.h:13
bool has(String name)
const String & getStartTime()
void registerMandatoryOutputFileList(const String &name, const String &description)
void setParameterRestrictions(String category, String par_name, int min_value, int max_value)
CommandlineParser(String tool_name, String tool_description, String tool_version, String build_date, String category="")
void registerMandatoryGalaxyOutputFolder(const String &name, const String &description)
void setParameterRestrictions(String category, String par_name, list< String > &allowed_values)
void registerOptionalIntegerListParameter(const String &name, const String &description, const std::vector< int > &default_values=vector< int >())
void setParameterRestrictions(String par_name, list< String > &allowed_values)
void registerFlag(String name, String description, bool default_gui_value=false, bool hidden=false)
void registerOptionalStringParameter(const String &name, const String &description, const String &default_value="")
const String & getStartCommand()
void registerMandatoryDoubleParameter(const String &name, const String &description)
void setParameterAsHidden(String name)
void registerOptionalInputFileList(const String &name, const String &description, const std::vector< String > &default_values=vector< String >())
void setToolManual(const String &manual)
void registerMandatoryGalaxyOutputId(const String &name, const String &description)
void registerMandatoryInputFile(const String &name, const String &description)
void setSupportedFormats(String category, String par_name, String supported_formats)
void setParameterAsAdvanced(String name)
void registerMandatoryIntegerParameter(const String &name, const String &description)
void registerOptionalDoubleListParameter(const String &name, const String &description, const std::vector< double > &default_values=vector< double >())
void registerMandatoryStringParameter(const String &name, const String &description)
void setSupportedFormats(String par_name, String supported_formats)
static const String NOT_FOUND
void registerOptionalGalaxyOutputId(const String &name, const String &description, const String &default_value="")
void registerOptionalGalaxyOutputFolder(const String &name, const String &description, const String &default_value="")
const String & get(String name)
void copyAdvancedParametersToOptions(Options &options)
void registerOptionalOutputFileList(const String &name, const String &description, const std::vector< String > &default_values=vector< String >())
void registerMandatoryOutputFile(const String &name, const String &description)
void registerMandatoryStringListParameter(const String &name, const String &description)
static const list< String > EMTPY_LIST
void registerOptionalStringListParameter(const String &name, const String &description, const std::vector< String > &default_values=vector< String >())
void registerMandatoryIntegerListParameter(const String &name, const String &description)
void setParameterRestrictions(String par_name, double min_value, double max_value)
void registerOptionalOutputFile(const String &name, const String &description, const String &default_value="")
void registerOptionalInputFile(const String &name, const String &description, const String &default_value="")
void registerMandatoryDoubleListParameter(const String &name, const String &description)
void registerOptionalIntegerParameter(const String &name, const String &description, int default_value=0)
const list< String > & getList(String name)
void setParameterRestrictions(String par_name, int min_value, int max_value)
void registerOptionalDoubleParameter(const String &name, const String &description, double default_value=0.0)
void printHelp(const std::set< String > &parameter_names=std::set< String >(), bool show_manual=true)
void registerMandatoryInputFileList(const String &name, const String &description)
void setParameterRestrictions(String category, String par_name, double min_value, double max_value)
void parse(int argc, char *argv[])
void registerAdvancedParameters(Options &options)
#define BALL_EXPORT
Definition: COMMON/global.h:50