lng(l),
arg_type(a),
seen_count(0),
+ ext_seen_count(0),
metavar("ARG")
{
if(lng.empty())
return *this;
}
+GetOpt::OptBase &GetOpt::OptBase::bind_seen_count(unsigned &c)
+{
+ ext_seen_count = &c;
+ return *this;
+}
+
void GetOpt::OptBase::process()
{
if(arg_type==REQUIRED_ARG)
throw usage_error("--"+lng+" requires an argument");
+
++seen_count;
+ if(ext_seen_count)
+ *ext_seen_count = seen_count;
- store();
+ try
+ {
+ store();
+ }
+ catch(const exception &e)
+ {
+ throw usage_error("Invalid argument for --"+lng+" ("+e.what()+")");
+ }
}
void GetOpt::OptBase::process(const string &arg)
{
if(arg_type==NO_ARG)
throw usage_error("--"+lng+" takes no argument");
+
++seen_count;
+ if(ext_seen_count)
+ *ext_seen_count = seen_count;
- store(arg);
+ try
+ {
+ store(arg);
+ }
+ catch(const exception &e)
+ {
+ throw usage_error("Invalid argument for --"+lng+" ("+e.what()+")");
+ }
}
} // namespace Msp