X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Console%2FTraits.ih;h=2e46835066845b3f0e2267315c1a70644a20294e;hb=ca70e274a556bf217f3f4c7b12e0fad2a7cd4853;hp=12fbb658b364091929a87b85bf231e175b44d34c;hpb=0eaf5340de8c2fbb02b1e0e13a797931e221dff3;p=senf.git diff --git a/Console/Traits.ih b/Console/Traits.ih index 12fbb65..2e46835 100644 --- a/Console/Traits.ih +++ b/Console/Traits.ih @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include "../Utils/singleton.hh" @@ -40,6 +41,8 @@ namespace senf { namespace console { namespace detail { +#ifndef DOXYGEN + typedef boost::bimap EnumTable; long parseEnum(EnumTable const & table, ParseCommandInfo::TokensRange const & tokens); @@ -52,33 +55,36 @@ namespace detail { EnumTable table; }; -# define SENF_CONSOLE_REGISTER_ENUM_ELT(r,d,e) (BOOST_PP_STRINGIZE(e), static_cast(e)) +# define SENF_CONSOLE_REGISTER_ENUM_ELT(r,d,e) \ + (BOOST_PP_STRINGIZE(e), static_cast(d e)) -# define SENF_CONSOLE_REGISTER_ENUM_(Type, Values) \ - void senf_console_init_enum_table(Type) \ +# define SENF_CONSOLE_REGISTER_ENUM_(Prefix, Type, Values) \ + void senf_console_init_enum_table(Prefix Type) \ { \ - senf::console::detail::EnumTraits & traits ( \ - senf::console::detail::EnumTraits::instance() ); \ + senf::console::detail::EnumTraits & traits ( \ + senf::console::detail::EnumTraits::instance() ); \ if (traits.table.empty()) \ boost::assign::insert(traits.table) \ - BOOST_PP_SEQ_FOR_EACH( SENF_CONSOLE_REGISTER_ENUM_ELT, _, Values ); \ + BOOST_PP_SEQ_FOR_EACH( SENF_CONSOLE_REGISTER_ENUM_ELT, Prefix, Values ); \ } \ void senf_console_parse_argument( \ - senf::console::ParseCommandInfo::TokensRange const & tokens, Type & out) \ + senf::console::ParseCommandInfo::TokensRange const & tokens, Prefix Type & out) \ { \ - senf_console_init_enum_table( Type() ); \ - out = static_cast( \ + senf_console_init_enum_table( Prefix Type() ); \ + out = static_cast( \ senf::console::detail::parseEnum( \ - senf::console::detail::EnumTraits::instance().table, tokens)); \ + senf::console::detail::EnumTraits::instance().table, tokens)); \ } \ - void senf_console_format_value(Type value, std::ostream & os) \ + void senf_console_format_value(Prefix Type value, std::ostream & os) \ { \ - senf_console_init_enum_table( Type() ); \ + senf_console_init_enum_table( Prefix Type() ); \ os << senf::console::detail::formatEnum( \ - senf::console::detail::EnumTraits::instance().table, \ + senf::console::detail::EnumTraits::instance().table, \ static_cast(value) ); \ } +#endif + }}} ///////////////////////////////ih.e////////////////////////////////////////