virtual std::string DefaultDescription() const;
virtual OPTION_BLOCK & Suboptions() { return m_suboptions; }
virtual PARSER_STATE Parse(int argc, char ** argv);
+ virtual void ParseValue(const std::string & value);
private:
RESETABLE<T> & m_param;
inline
PARSER_STATE PARAM_ACTION<T>::Parse(int argc, char ** argv)
{
+if (argc == 0 ||
+ argv == NULL ||
+ *argv == NULL)
+ throw ERROR("Missing argument.");
T value;
if (str2x(*argv, value))
throw ERROR(std::string("Bad argument: '") + *argv + "'");
return PARSER_STATE(false, --argc, ++argv);
}
+template <typename T>
+inline
+void PARAM_ACTION<T>::ParseValue(const std::string & stringValue)
+{
+if (stringValue.empty())
+ throw ERROR("Missing value.");
+T value;
+if (str2x(stringValue, value))
+ throw ERROR(std::string("Bad value: '") + stringValue + "'");
+m_param = value;
+}
+
+template <>
+inline
+void PARAM_ACTION<std::string>::ParseValue(const std::string & stringValue)
+{
+m_param = stringValue;
+}
+
template <>
inline
PARSER_STATE PARAM_ACTION<std::string>::Parse(int argc, char ** argv)
{
+if (argc == 0 ||
+ argv == NULL ||
+ *argv == NULL)
+ throw ERROR("Missing argument.");
m_param = *argv;
return PARSER_STATE(false, --argc, ++argv);
}