// 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