X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Console%2FParsedCommand.mpp;h=c5ffd18450dc2fbbf58e8bd2f1755c16a40cfcba;hb=456ee576285b76aa46240f8001f426757810dcc1;hp=a1c5e466b69016d0f51dd7c242d5cc14f8b5dda7;hpb=80c6cb7ba9ad7776824c84809f422209adf27331;p=senf.git diff --git a/Console/ParsedCommand.mpp b/Console/ParsedCommand.mpp index a1c5e46..c5ffd18 100644 --- a/Console/ParsedCommand.mpp +++ b/Console/ParsedCommand.mpp @@ -95,6 +95,8 @@ public: template detail::ArgumentInfo::type> & arg() const; + void function(Function fn); + protected: private: @@ -131,6 +133,8 @@ public: template detail::ArgumentInfo::type> & arg() const; + void function(Function fn); + protected: private: @@ -178,6 +182,14 @@ arg() const } template +void +senf::console::ParsedCommandOverload:: +function(Function fn) +{ + function_ = fn; +} + +template prefix_ senf::console::ParsedCommandOverload:: ParsedCommandOverload(Function fn) @@ -211,6 +223,14 @@ arg() const } template +void +senf::console::ParsedCommandOverload:: +function(Function fn) +{ + function_ = fn; +} + +template prefix_ senf::console::ParsedCommandOverload:: ParsedCommandOverload(Function fn) @@ -232,9 +252,12 @@ prefix_ void senf::console::ParsedCommandOverload BOOST_PP_ITERATION() ) + // We NEED to know the number of arguments beforehand so we can assign default values + // correctly ... hrmpf ... + unsigned nArgs ( command.arguments().size() ); + if ( nArgs > BOOST_PP_ITERATION() ) throw SyntaxErrorException("invalid number of arguments"); - int nDefaults ( BOOST_PP_ITERATION() - command.arguments().size() ); + int nDefaults ( BOOST_PP_ITERATION() - nArgs ); typedef typename boost::range_const_reverse_iterator::type riterator; @@ -268,9 +291,12 @@ prefix_ void senf::console::ParsedCommandOverload BOOST_PP_ITERATION() ) + // We NEED to know the number of arguments beforehand so we can assign default values + // correctly ... hrmpf ... + unsigned nArgs ( command.arguments().size() ); + if ( nArgs > BOOST_PP_ITERATION() ) throw SyntaxErrorException("invalid number of arguments"); - int nDefaults ( BOOST_PP_ITERATION() - command.arguments().size() ); + int nDefaults ( BOOST_PP_ITERATION() - nArgs ); typedef typename boost::range_const_reverse_iterator::type riterator;