...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::basic_option
// In header: <boost/program_options/option.hpp> template<typename charT> class basic_option { public: // construct/copy/destruct basic_option(); basic_option(const std::string &, const std::vector< std::string > &); // public data members std::string string_key; int position_key; std::vector< std::basic_string< charT > > value; std::vector< std::basic_string< charT > > original_tokens; bool unregistered; bool case_insensitive; };
Option found in input source. Contains a key and a value. The key, in turn, can be a string (name of an option), or an integer (position in input source) -- in case no name is specified. The latter is only possible for command line. The template parameter specifies the type of char used for storing the option's value.
basic_option
public
public data membersstd::string string_key;
String key of this option. Intentionally independent of the template parameter.
int position_key;
Position key of this option. All options without an explicit name are sequentially numbered starting from 0. If an option has explicit name, 'position_key' is equal to -1. It is possible that both position_key and string_key is specified, in case name is implicitly added.
std::vector< std::basic_string< charT > > value;
Option's value
std::vector< std::basic_string< charT > > original_tokens;
The original unchanged tokens this option was created from.
bool unregistered;
True if option was not recognized. In that case, 'string_key' and 'value' are results of purely syntactic parsing of source. The original tokens can be recovered from the "original_tokens" member.
bool case_insensitive;
True if string_key has to be handled case insensitive.