io.hpp
Go to the documentation of this file.
1 
13 #ifndef MLPACK_CORE_UTIL_IO_HPP
14 #define MLPACK_CORE_UTIL_IO_HPP
15 
16 #include <iostream>
17 #include <list>
18 #include <map>
19 #include <string>
20 
21 #include <boost/any.hpp>
22 
23 #include <mlpack/prereqs.hpp>
24 
25 #include "timers.hpp"
26 #include "binding_details.hpp"
27 #include "program_doc.hpp"
28 #include "version.hpp"
29 
30 #include "param_data.hpp"
31 
34 
35 namespace mlpack {
36 
172 class IO
173 {
174  public:
181  static void Add(util::ParamData&& d);
182 
188  static bool HasParam(const std::string& identifier);
189 
196  template<typename T>
197  static T& GetParam(const std::string& identifier);
198 
207  template<typename T>
208  static std::string GetPrintableParam(const std::string& identifier);
209 
219  template<typename T>
220  static T& GetRawParam(const std::string& identifier);
221 
228  template<typename T>
229  static void CheckInputMatrix(const T& matrix, const std::string& identifier);
230 
240  static void MakeInPlaceCopy(const std::string& outputParamName,
241  const std::string& inputParamName);
242 
254  static IO& GetSingleton();
255 
257  static std::map<std::string, util::ParamData>& Parameters();
259  static std::map<char, std::string>& Aliases();
260 
262  static std::string ProgramName();
263 
269  static void SetPassed(const std::string& name);
270 
279  static void StoreSettings(const std::string& name);
280 
290  static void RestoreSettings(const std::string& name, const bool fatal = true);
291 
295  static void ClearSettings();
296 
300  static void CheckInputMatrices();
301 
302  private:
304  std::map<char, std::string> aliases;
306  std::map<std::string, util::ParamData> parameters;
307 
308  public:
311  typedef std::map<std::string, std::map<std::string,
312  void (*)(util::ParamData&, const void*, void*)>> FunctionMapType;
314 
315  private:
317  std::map<std::string, std::tuple<std::map<std::string, util::ParamData>,
318  std::map<char, std::string>, FunctionMapType>> storageMap;
319 
320  public:
322  bool didParse;
323 
326  std::string programName;
327 
330 
332  friend class Timer;
333 
336  private:
340  IO();
341 
343  IO(const IO& other);
345  IO& operator=(const IO& other);
346 };
347 
348 } // namespace mlpack
349 
350 // Include the actual definitions of templated methods
351 #include "io_impl.hpp"
352 
353 #endif
Linear algebra utility functions, generally performed on matrices or vectors.
static void CheckInputMatrices()
Checks all input matrices for NaN and inf values, exits if found any.
static void StoreSettings(const std::string &name)
Take all parameters and function mappings and store them, under the given name.
The core includes that mlpack expects; standard C++ includes and Armadillo.
static void Add(util::ParamData &&d)
Adds a parameter to the hierarchy; use the PARAM_*() macros instead of this (i.e. ...
static void CheckInputMatrix(const T &matrix, const std::string &identifier)
Utility function for CheckInputMatrices().
bool didParse
True, if IO was used to parse command line options.
Definition: io.hpp:322
static void RestoreSettings(const std::string &name, const bool fatal=true)
Restore all of the parameters and function mappings of the given name, if they exist.
This structure holds all of the information about a single parameter, including its value (which is s...
Definition: param_data.hpp:52
static void MakeInPlaceCopy(const std::string &outputParamName, const std::string &inputParamName)
Given two (matrix) parameters, ensure that the first is an in-place copy of the second.
Parses the command line for parameters and holds user-specified parameters.
Definition: io.hpp:172
static T & GetRawParam(const std::string &identifier)
Get the raw value of the parameter before any processing that GetParam() might normally do...
static IO & GetSingleton()
Retrieve the singleton.
The timer class provides a way for mlpack methods to be timed.
Definition: timers.hpp:46
static std::map< char, std::string > & Aliases()
Return a modifiable list of aliases that IO knows about.
static void SetPassed(const std::string &name)
Mark a particular parameter as passed.
std::map< std::string, std::map< std::string, void(*)(util::ParamData &, const void *, void *)> > FunctionMapType
Map for functions and types.
Definition: io.hpp:312
static T & GetParam(const std::string &identifier)
Get the value of type T found while parsing.
static void ClearSettings()
Clear all of the settings, removing all parameters and function mappings.
static bool HasParam(const std::string &identifier)
See if the specified flag was found while parsing.
util::BindingDetails doc
Holds the bindingDetails objects.
Definition: io.hpp:335
Timers timer
Holds the timer objects.
Definition: io.hpp:329
FunctionMapType functionMap
Definition: io.hpp:313
static std::string GetPrintableParam(const std::string &identifier)
Cast the given parameter of the given type to a short, printable std::string, for use in status messa...
This structure holds all of the information about bindings documentation.
static std::map< std::string, util::ParamData > & Parameters()
Return a modifiable list of parameters that IO knows about.
std::string programName
Holds the name of the program for –version.
Definition: io.hpp:326
static std::string ProgramName()
Get the program name as set by the BINDING_NAME() macro.