...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::program_options::abstract_variables_map
// In header: <boost/program_options/variables_map.hpp> class abstract_variables_map { public: // public member functions abstract_variables_map(); abstract_variables_map(const abstract_variables_map *); virtual ~abstract_variables_map(); const variable_value & operator[](const std::string &) const; void next(abstract_variables_map *); // private member functions virtual const variable_value & get(const std::string &) const = 0; };
Implements string->string mapping with convenient value casting facilities.
abstract_variables_map
public member functionsabstract_variables_map();
abstract_variables_map(const abstract_variables_map * next);
virtual ~abstract_variables_map();
const variable_value & operator[](const std::string & name) const;
Obtains the value of variable 'name', from *this and possibly from the chain of variable maps.
if there's no value in *this.
if there's next variable map, returns value from it
otherwise, returns empty value
if there's defaulted value
if there's next variable map, which has a non-defaulted value, return that
otherwise, return value from *this
if there's a non-defaulted value, returns it.
void next(abstract_variables_map * next);
Sets next variable map, which will be used to find variables not found in *this.
abstract_variables_map
private member functionsvirtual const variable_value & get(const std::string & name) const = 0;
Returns value of variable 'name' stored in *this, or empty value otherwise.