// 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_CMDLINE_HPP_VP_2004_03_13 #define BOOST_CMDLINE_HPP_VP_2004_03_13 namespace boost { namespace program_options { namespace command_line_style { /** Various possible styles of options. There are "long" options, which start with "--" and "short", which start with either "-" or "/". Both kinds can be allowed or disallowed, see allow_long and allow_short. The allowed character for short options is also configurable. Option's value can be specified in the same token as name ("--foo=bar"), or in the next token. It's possible to introduce long options by the same character as short options, see allow_long_disguise. Finally, guessing (specifying only prefix of option) and case insensitive processing are supported. */ enum style_t { /// Allow "--long_name" style allow_long = 1, /// Allow "-<single character" style allow_short = allow_long << 1, /// Allow "-" in short options allow_dash_for_short = allow_short << 1, /// Allow "/" in short options allow_slash_for_short = allow_dash_for_short << 1, /** Allow option parameter in the same token for long option, like in @verbatim --foo=10 @endverbatim */ long_allow_adjacent = allow_slash_for_short << 1, /** Allow option parameter in the next token for long options. */ long_allow_next = long_allow_adjacent << 1, /** Allow option parameter in the same token for short options. */ short_allow_adjacent = long_allow_next << 1, /** Allow option parameter in the next token for short options. */ short_allow_next = short_allow_adjacent << 1, /** Allow to merge several short options together, so that "-s -k" become "-sk". All of the options but last should accept no parameter. For example, if "-s" accept a parameter, then "k" will be taken as parameter, not another short option. Dos-style short options cannot be sticky. */ allow_sticky = short_allow_next << 1, /** Allow abbreviated spellings for long options, if they unambiguously identify long option. No long option name should be prefix of other long option name if guessing is in effect. */ allow_guessing = allow_sticky << 1, /** Ignore the difference in case for long options. */ long_case_insensitive = allow_guessing << 1, /** Ignore the difference in case for short options. */ short_case_insensitive = long_case_insensitive << 1, /** Ignore the difference in case for all options. */ case_insensitive = (long_case_insensitive | short_case_insensitive), /** Allow long options with single option starting character, e.g <tt>-foo=10</tt> */ allow_long_disguise = short_case_insensitive << 1, /** The more-or-less traditional unix style. */ unix_style = (allow_short | short_allow_adjacent | short_allow_next | allow_long | long_allow_adjacent | long_allow_next | allow_sticky | allow_guessing | allow_dash_for_short), /** The default style. */ default_style = unix_style }; }}} #endif