// Copyright Vladimir Prus 2004. | |
// Distributed under the Boost Software License, Version 1.0. | |
// (See accompanying file LICENSE_1_0.txt | |
// or copy at http://www.boost.org/LICENSE_1_0.txt) | |
#ifndef BOOST_OPTION_HPP_VP_2004_02_25 | |
#define BOOST_OPTION_HPP_VP_2004_02_25 | |
#include <boost/program_options/config.hpp> | |
#include <string> | |
#include <vector> | |
namespace boost { namespace program_options { | |
/** 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. | |
*/ | |
template<class charT> | |
class basic_option { | |
public: | |
basic_option() | |
: position_key(-1) | |
, unregistered(false) | |
, case_insensitive(false) | |
{} | |
basic_option(const std::string& xstring_key, | |
const std::vector< std::string> &xvalue) | |
: string_key(xstring_key) | |
, value(xvalue) | |
, unregistered(false) | |
, case_insensitive(false) | |
{} | |
/** String key of this option. Intentionally independent of the template | |
parameter. */ | |
std::string string_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. | |
*/ | |
int position_key; | |
/** Option's value */ | |
std::vector< std::basic_string<charT> > value; | |
/** The original unchanged tokens this option was | |
created from. */ | |
std::vector< std::basic_string<charT> > original_tokens; | |
/** 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 unregistered; | |
/** True if string_key has to be handled | |
case insensitive. | |
*/ | |
bool case_insensitive; | |
}; | |
typedef basic_option<char> option; | |
typedef basic_option<wchar_t> woption; | |
}} | |
#endif |