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
7
8#include <map>
9#include <set>
10
11
12namespace 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)
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)
const String & getStartTime()
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="")
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 >())
const String & getStartCommand()
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="")
void copyAdvancedParametersToOptions(Options &options)
void registerOptionalOutputFileList(const String &name, const String &description, const std::vector< String > &default_values=vector< String >())
const String & get(String name)
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)
const list< String > & getList(String name)
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)
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