X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Console%2FParsedCommand.cti;h=72f372ee91568081637551c35f482272fa3519ba;hb=01e02e262ea327678dfa0c3f7a66d50ed91924d5;hp=6809191b0c422a64aa9fe0687e34f946b348f770;hpb=869df8df564cd4f4934d4cd1c1b290c2aeabbd92;p=senf.git diff --git a/Console/ParsedCommand.cti b/Console/ParsedCommand.cti index 6809191..72f372e 100644 --- a/Console/ParsedCommand.cti +++ b/Console/ParsedCommand.cti @@ -28,6 +28,7 @@ // Custom includes #include "../Utils/membind.hh" #include +#include #define prefix_ inline ///////////////////////////////cti.p/////////////////////////////////////// @@ -117,9 +118,45 @@ ParsedAttributeAttributorBase(Overload & overload, unsigned index) // senf::console::ParsedAttributeAttributor template -prefix_ senf::console::ParsedAttributeAttributor -senf::console::ParsedAttributeAttributor::arg(std::string const & name, - std::string const & doc) +template +prefix_ typename senf::console::ParsedAttributeAttributor::next_type +senf::console::ParsedAttributeAttributor:: +argInfo(ArgumentPack const & args) + const +{ + typedef typename boost::parameter::binding< + ArgumentPack, tag::detail::default_value_>::type default_value_t; + return argInfo( args, boost::is_same() ); +} + +template +template +prefix_ typename senf::console::ParsedAttributeAttributor::next_type +senf::console::ParsedAttributeAttributor:: +argInfo(ArgumentPack const & args, boost::mpl::true_) + const +{ + return argInfo( args[tag::name_ | ""], + args[tag::description_ | ""] ); + +} + +template +template +prefix_ typename senf::console::ParsedAttributeAttributor::next_type +senf::console::ParsedAttributeAttributor:: +argInfo(ArgumentPack const & args, boost::mpl::false_) + const +{ + return argInfo( args[tag::name_ | ""], + args[tag::description_ | ""], + args[tag::default_value_ | value_type()] ); +} + +template +prefix_ typename senf::console::ParsedAttributeAttributor::next_type +senf::console::ParsedAttributeAttributor::argInfo(std::string const & name, + std::string const & doc) const { this->argName(name); @@ -128,10 +165,10 @@ senf::console::ParsedAttributeAttributor::arg(std::string c } template -prefix_ senf::console::ParsedAttributeAttributor -senf::console::ParsedAttributeAttributor::arg(std::string const & name, - std::string const & doc, - value_type const & value) +prefix_ typename senf::console::ParsedAttributeAttributor::next_type +senf::console::ParsedAttributeAttributor::argInfo(std::string const & name, + std::string const & doc, + value_type const & value) const { this->argName(name); @@ -170,7 +207,7 @@ template prefix_ senf::console::ParsedAttributeAttributor:: ParsedAttributeAttributor(Overload & overload) - : ParsedAttributeAttributorBase (overload, index) + : ParsedCommandAttributor (overload, index) {} ///////////////////////////////////////////////////////////////////////////