lemon/arg_parser.h
changeset 2408 467ca6d16556
parent 2406 0ffc78641b34
child 2410 fe46b61da4e3
equal deleted inserted replaced
3:251222ea5497 4:0d4b222ed174
   308       RefType(ArgParser &p,const std::string &n) :_parser(p),_name(n) {}
   308       RefType(ArgParser &p,const std::string &n) :_parser(p),_name(n) {}
   309       ///\e
   309       ///\e
   310       operator bool() 
   310       operator bool() 
   311       {
   311       {
   312 	Opts::iterator i = _parser._opts.find(_name);
   312 	Opts::iterator i = _parser._opts.find(_name);
   313 	if(i==_parser._opts.end()) throw LogicError();
   313 	LEMON_ASSERT(i==_parser._opts.end(),
   314 	else if(i->second.type!=ArgParser::BOOL)
   314 		     std::string()+"Unkown option: '"+_name+"'");
   315 	  throw LogicError();
   315 	LEMON_ASSERT(i->second.type!=ArgParser::BOOL,
   316 	else return *(i->second.bool_p);
   316 		     std::string()+"'"+_name+"' is a bool option");
       
   317 	return *(i->second.bool_p);
   317       }
   318       }
   318       ///\e
   319       ///\e
   319       operator std::string()
   320       operator std::string()
   320       {
   321       {
   321 	Opts::iterator i = _parser._opts.find(_name);
   322 	Opts::iterator i = _parser._opts.find(_name);
   322 	if(i==_parser._opts.end()) throw LogicError();
   323 	LEMON_ASSERT(i==_parser._opts.end(),
   323 	else if(i->second.type!=ArgParser::STRING)
   324 		     std::string()+"Unkown option: '"+_name+"'");
   324 	  throw LogicError();
   325 	LEMON_ASSERT(i->second.type!=ArgParser::STRING,
   325 	else return *(i->second.string_p);
   326 		     std::string()+"'"+_name+"' is a string option");
       
   327 	return *(i->second.string_p);
   326       }
   328       }
   327       ///\e
   329       ///\e
   328       operator double() 
   330       operator double() 
   329       {
   331       {
   330 	Opts::iterator i = _parser._opts.find(_name);
   332 	Opts::iterator i = _parser._opts.find(_name);
   331 	if(i==_parser._opts.end()) throw LogicError();
   333 	LEMON_ASSERT(i==_parser._opts.end(),
   332 	else if(i->second.type!=ArgParser::DOUBLE) 
   334 		     std::string()+"Unkown option: '"+_name+"'");
   333 	  throw LogicError();
   335 	LEMON_ASSERT(i->second.type!=ArgParser::DOUBLE,
   334 	else return *(i->second.double_p);
   336 		     std::string()+"'"+_name+"' is a floating point option");
       
   337 	return *(i->second.double_p);
   335       }
   338       }
   336       ///\e
   339       ///\e
   337       operator int() 
   340       operator int() 
   338       {
   341       {
   339 	Opts::iterator i = _parser._opts.find(_name);
   342 	Opts::iterator i = _parser._opts.find(_name);
   340 	if(i==_parser._opts.end()) throw LogicError();
   343 	LEMON_ASSERT(i==_parser._opts.end(),
   341 	else if(i->second.type!=ArgParser::INTEGER)
   344 		     std::string()+"Unkown option: '"+_name+"'");
   342 	  throw LogicError();
   345 	LEMON_ASSERT(i->second.type!=ArgParser::INTEGER,
   343 	else return *(i->second.int_p);
   346 		     std::string()+"'"+_name+"' is an integer option");
       
   347 	return *(i->second.int_p);
   344       }
   348       }
   345 
   349 
   346     };
   350     };
   347 
   351 
   348     ///Give back the value of an option
   352     ///Give back the value of an option