X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FConsole%2FTraits.hh;h=a5b0ccd77db6c96e75acc12f876c3215d3688160;hb=c5d0e492a701a054b1f3d56e128b2c4675b0d50b;hp=2e848821939f8f153d75a9da2db930b07d5c45ab;hpb=7a4fb9b49e6eccd19a1ea48a31175245b6dadb61;p=senf.git diff --git a/Utils/Console/Traits.hh b/Utils/Console/Traits.hh index 2e84882..a5b0ccd 100644 --- a/Utils/Console/Traits.hh +++ b/Utils/Console/Traits.hh @@ -29,6 +29,7 @@ // Custom includes #include #include +#include #include "../../Utils/intrusive_refcount.hh" #include "Parse.hh" #include "Node.hh" @@ -94,6 +95,12 @@ namespace console { { typedef Type type; + static bool const singleToken = + boost::is_same< typeof(senf_console_parse_argument( + *static_cast(0), + *static_cast(0))), + bool >::value; + static void parse(ParseCommandInfo::TokensRange const & tokens, Type & out); ///< Parse token range into value /**< This function needs to parse \a tokens and write the @@ -121,7 +128,7 @@ namespace console { \related ArgumentTraits */ template - void senf_console_parse_argument(ParseCommandInfo::TokensRange const & tokens, Type & out); + bool senf_console_parse_argument(ParseCommandInfo::TokensRange const & tokens, Type & out); /** \brief Parse token range @@ -143,6 +150,7 @@ namespace console { struct ArgumentTraits { typedef bool type; + static bool const singleToken = true; static void parse(ParseCommandInfo::TokensRange const & tokens, bool & out); static std::string description(); @@ -225,6 +233,7 @@ namespace console { struct ArgumentTraits< FlagCollection > { typedef FlagCollection type; + static bool const singleToken = false; static void parse(ParseCommandInfo::TokensRange const & tokens, type & out); static std::string description(); static std::string str(type const & value);