#include <string>
#include <vector>
#include <list>
+#include <utility>
#include <stdexcept>
#include <cstddef> // size_t
OPTION & operator=(const OPTION & rhs);
void Help(size_t level = 0) const;
- PARSER_STATE Parse(int argc, char ** argv);
+ PARSER_STATE Parse(int argc, char ** argv, void * data);
+ void ParseValue(const std::string & value);
bool Check(const char * arg) const;
+ const std::string & Name() const { return m_longName; }
class ERROR : public std::runtime_error
{
void Help(size_t level) const;
- PARSER_STATE Parse(int argc, char ** argv);
+ PARSER_STATE Parse(int argc, char ** argv, void * data = NULL);
+ void ParseFile(const std::string & filePath);
+
+ class ERROR : public std::runtime_error
+ {
+ public:
+ ERROR(const std::string & message)
+ : std::runtime_error(message.c_str()) {}
+ };
private:
std::vector<OPTION> m_options;
std::string m_description;
+
+ void OptionCallback(const std::string & key, const std::string & value);
};
class OPTION_BLOCKS
public:
OPTION_BLOCK & Add(const std::string & description)
{ m_blocks.push_back(OPTION_BLOCK(description)); return m_blocks.back(); }
+ void Add(const OPTION_BLOCK & block) { m_blocks.push_back(block); }
void Help(size_t level) const;
PARSER_STATE Parse(int argc, char ** argv);