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
BALL::CommandlineParser::registerOptionalStringListParameter
void registerOptionalStringListParameter(const String &name, const String &description, const std::vector< String > &default_values=vector< String >())
BALL_EXPORT
#define BALL_EXPORT
Definition: COMMON/global.h:50
BALL::CommandlineParser::registerOptionalStringParameter
void registerOptionalStringParameter(const String &name, const String &description, const String &default_value="")
BALL::CommandlineParser::getList
const list< String > & getList(String name)
BALL::CommandlineParser::registerOptionalInputFileList
void registerOptionalInputFileList(const String &name, const String &description, const std::vector< String > &default_values=vector< String >())
BALL::CommandlineParser::EMTPY_LIST
static const list< String > EMTPY_LIST
Definition: commandlineParser.h:47
BALL::CommandlineParser::registerMandatoryOutputFile
void registerMandatoryOutputFile(const String &name, const String &description)
BALL::CommandlineParser::setParameterAsAdvanced
void setParameterAsAdvanced(String name)
BALL::CommandlineParser::getStartCommand
const String & getStartCommand()
BALL::CommandlineParser::registerMandatoryOutputFileList
void registerMandatoryOutputFileList(const String &name, const String &description)
BALL::CommandlineParser::CommandlineParser
CommandlineParser(String tool_name, String tool_description, String tool_version, String build_date, String category="")
BALL::Options
Definition: options.h:48
BALL::CommandlineParser::parse
void parse(int argc, char *argv[])
BALL::CommandlineParser
Definition: commandlineParser.h:39
BALL::CommandlineParser::setToolManual
void setToolManual(const String &manual)
BALL::CommandlineParser::registerOptionalGalaxyOutputId
void registerOptionalGalaxyOutputId(const String &name, const String &description, const String &default_value="")
BALL::CommandlineParser::setParameterRestrictions
void setParameterRestrictions(String par_name, list< String > &allowed_values)
BALL::CommandlineParser::getStartTime
const String & getStartTime()
BALL::CommandlineParser::copyAdvancedParametersToOptions
void copyAdvancedParametersToOptions(Options &options)
BALL::CommandlineParser::registerMandatoryIntegerParameter
void registerMandatoryIntegerParameter(const String &name, const String &description)
BALL::CommandlineParser::registerFlag
void registerFlag(String name, String description, bool default_gui_value=false, bool hidden=false)
BALL::CommandlineParser::setParameterRestrictions
void setParameterRestrictions(String category, String par_name, double min_value, double max_value)
BALL::CommandlineParser::setSupportedFormats
void setSupportedFormats(String par_name, String supported_formats)
BALL::CommandlineParser::registerOptionalOutputFile
void registerOptionalOutputFile(const String &name, const String &description, const String &default_value="")
BALL::CommandlineParser::printToolInfo
void printToolInfo()
BALL::ParamFile::ParameterType
ParameterType
Definition: paramFile.h:28
BALL::CommandlineParser::registerMandatoryInputFile
void registerMandatoryInputFile(const String &name, const String &description)
BALL::CommandlineParser::setParameterRestrictions
void setParameterRestrictions(String category, String par_name, int min_value, int max_value)
BALL::String
Definition: string.h:57
BALL::CommandlineParser::registerOptionalInputFile
void registerOptionalInputFile(const String &name, const String &description, const String &default_value="")
BALL
Definition: constants.h:13
BALL::CommandlineParser::registerMandatoryStringParameter
void registerMandatoryStringParameter(const String &name, const String &description)
BALL::CommandlineParser::registerOptionalDoubleParameter
void registerOptionalDoubleParameter(const String &name, const String &description, double default_value=0.0)
BALL::CommandlineParser::printHelp
void printHelp(const std::set< String > &parameter_names=std::set< String >(), bool show_manual=true)
BALL::CommandlineParser::setParameterRestrictions
void setParameterRestrictions(String par_name, double min_value, double max_value)
options.h
BALL::CommandlineParser::setParameterAsHidden
void setParameterAsHidden(String name)
BALL::CommandlineParser::registerOptionalGalaxyOutputFolder
void registerOptionalGalaxyOutputFolder(const String &name, const String &description, const String &default_value="")
BALL_SIZE_TYPE
BALL::CommandlineParser::setSupportedFormats
void setSupportedFormats(String category, String par_name, String supported_formats)
BALL::CommandlineParser::registerMandatoryStringListParameter
void registerMandatoryStringListParameter(const String &name, const String &description)
BALL::CommandlineParser::registerAdvancedParameters
void registerAdvancedParameters(Options &options)
BALL::CommandlineParser::setParameterRestrictions
void setParameterRestrictions(String category, String par_name, list< String > &allowed_values)
string.h
BALL::CommandlineParser::registerMandatoryGalaxyOutputFolder
void registerMandatoryGalaxyOutputFolder(const String &name, const String &description)
BALL::CommandlineParser::registerMandatoryInputFileList
void registerMandatoryInputFileList(const String &name, const String &description)
BALL::CommandlineParser::registerMandatoryDoubleListParameter
void registerMandatoryDoubleListParameter(const String &name, const String &description)
BALL::CommandlineParser::registerMandatoryIntegerListParameter
void registerMandatoryIntegerListParameter(const String &name, const String &description)
BALL::CommandlineParser::registerOptionalDoubleListParameter
void registerOptionalDoubleListParameter(const String &name, const String &description, const std::vector< double > &default_values=vector< double >())
BALL::CommandlineParser::get
const String & get(String name)
BALL::CommandlineParser::has
bool has(String name)
BALL::CommandlineParser::NOT_FOUND
static const String NOT_FOUND
Definition: commandlineParser.h:46
BALL::CommandlineParser::registerMandatoryDoubleParameter
void registerMandatoryDoubleParameter(const String &name, const String &description)
BALL::CommandlineParser::registerOptionalIntegerParameter
void registerOptionalIntegerParameter(const String &name, const String &description, int default_value=0)
paramFile.h
BALL::CommandlineParser::registerOptionalIntegerListParameter
void registerOptionalIntegerListParameter(const String &name, const String &description, const std::vector< int > &default_values=vector< int >())
BALL::CommandlineParser::setParameterRestrictions
void setParameterRestrictions(String par_name, int min_value, int max_value)
BALL::CommandlineParser::registerOptionalOutputFileList
void registerOptionalOutputFileList(const String &name, const String &description, const std::vector< String > &default_values=vector< String >())
BALL::CommandlineParser::registerMandatoryGalaxyOutputId
void registerMandatoryGalaxyOutputId(const String &name, const String &description)