71 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			71 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | // 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 |