+
+GetOpt::OptBase::OptBase(char s, const std::string &l, ArgType a):
+ shrt(s),
+ lng(l),
+ arg_type(a),
+ seen_count(0),
+ metavar("ARG")
+{ }
+
+GetOpt::OptBase &GetOpt::OptBase::set_help(const string &h)
+{
+ help=h;
+ return *this;
+}
+
+GetOpt::OptBase &GetOpt::OptBase::set_help(const string &h, const string &m)
+{
+ help=h;
+ metavar=m;
+ return *this;
+}
+
+void GetOpt::OptBase::process()
+{
+ if(arg_type==REQUIRED_ARG)
+ throw UsageError("--"+lng+" requires an argument");
+ ++seen_count;
+
+ store();
+}
+
+void GetOpt::OptBase::process(const string &arg)
+{
+ if(arg_type==NO_ARG)
+ throw UsageError("--"+lng+" takes no argument");
+ ++seen_count;
+
+ store(arg);
+}
+