private:
ParsedCommandOverload(Function fn);
- virtual void v_execute(std::ostream & os, ParseCommandInfo const & command) const;
+ virtual void v_execute(boost::any & rv, std::ostream & os, ParseCommandInfo const & command)
+ const;
Function function_;
Formatter formatter_;
private:
ParsedCommandOverload(Function fn);
- virtual void v_execute(std::ostream & os, ParseCommandInfo const & command) const;
+ virtual void v_execute(boost::any & rv, std::ostream & os, ParseCommandInfo const & command)
+ const;
Function function_;
};
template <class FunctionTraits, class ReturnValue>
prefix_ void senf::console::ParsedCommandOverload<FunctionTraits, ReturnValue, BOOST_PP_ITERATION() >::
-v_execute(std::ostream & os, ParseCommandInfo const & command)
+v_execute(boost::any & rv, std::ostream & os, ParseCommandInfo const & command)
const
{
// We NEED to know the number of arguments beforehand so we can assign default values
# undef mpp_l
# undef mpp_l_
+ ReturnValue rvv (function_(os mpp_TrailingArgs()));
+ rv = rvv;
if (formatter_)
- formatter_( function_(os mpp_TrailingArgs()), os );
+ formatter_(rvv, os);
else
- ReturnValueTraits<result_type>::format( function_(os mpp_TrailingArgs()), os );
+ ReturnValueTraits<result_type>::format(rvv, os);
os << "\n";
}
template <class FunctionTraits>
prefix_ void senf::console::ParsedCommandOverload<FunctionTraits, void, BOOST_PP_ITERATION() >::
-v_execute(std::ostream & os, ParseCommandInfo const & command)
+v_execute(boost::any & rv, std::ostream & os, ParseCommandInfo const & command)
const
{
// We NEED to know the number of arguments beforehand so we can assign default values