X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Console%2FVariables.cti;h=f074c5f3d1156dab3abc7c8a8e86f1fde4d3ec90;hb=80c6cb7ba9ad7776824c84809f422209adf27331;hp=2cdff1bc1013c6b8bd208b8e729a5718f92d8d59;hpb=80c83d2565c50f8ad33af2be0f4cb3e5735cafcf;p=senf.git diff --git a/Console/Variables.cti b/Console/Variables.cti index 2cdff1b..f074c5f 100644 --- a/Console/Variables.cti +++ b/Console/Variables.cti @@ -73,32 +73,121 @@ prefix_ void senf::console::detail::SetVariable::onChange(OnChangeHand } /////////////////////////////////////////////////////////////////////////// +// senf::console::ConstVariableAttributor + +template +prefix_ senf::console::ConstVariableAttributor +senf::console::ConstVariableAttributor::doc(std::string const & doc) +{ + queryOverload_.node().doc(doc); + return *this; +} + +template +prefix_ senf::console::ConstVariableAttributor +senf::console::ConstVariableAttributor::formatter(Formatter formatter) +{ + queryOverload_.formatter(formatter); + return *this; +} + +template +prefix_ senf::console::ConstVariableAttributor:: +ConstVariableAttributor(QueryOverload & queryOverload) + : queryOverload_ (queryOverload) +{} + +/////////////////////////////////////////////////////////////////////////// // senf::console::VariableAttributor template +prefix_ senf::console::VariableAttributor +senf::console::VariableAttributor::parser(Parser parser) +{ + setOverload_.template arg<0>().parser = parser; + return *this; +} + +template +prefix_ senf::console::VariableAttributor +senf::console::VariableAttributor::typeName(std::string const & name) +{ + setOverload_.arg(0).type = name; + return *this; +} + +template +prefix_ typename senf::console::VariableAttributor +senf::console::VariableAttributor::doc(std::string const & doc) +{ + ConstVariableAttributor::doc(doc); + return *this; +} + +template +prefix_ typename senf::console::VariableAttributor +senf::console::VariableAttributor::formatter(Formatter formatter) +{ + ConstVariableAttributor::formatter(formatter); + return *this; +} + +template prefix_ senf::console::VariableAttributor::VariableAttributor(QueryOverload & queryOverload, SetOverload & setOverload) - : queryOverload_ (queryOverload), setOverload_ (setOverload) + : ConstVariableAttributor (queryOverload), setOverload_ (setOverload) {} /////////////////////////////////////////////////////////////////////////// -template +template prefix_ senf::console::VariableAttributor -senf::console::senf_console_add_node(DirectoryNode & node, std::string const & name, - Variable * var, int) +senf::console::detail::VariableNodeCreator::add(DirectoryNode & node, + std::string const & name, + Variable & var) { typename VariableAttributor::SetOverload & setOverload ( node.add(name, typename detail::SetVariable::Function( - detail::SetVariable(*var))).overload() ); + detail::SetVariable(var))) + .arg("new_value") + .overload() ); typename VariableAttributor::QueryOverload & queryOverload ( node.add(name, typename detail::QueryVariable::Function( - detail::QueryVariable(*var))).overload() ); + detail::QueryVariable(var))).overload() ); return VariableAttributor(queryOverload, setOverload); } +template +prefix_ senf::console::ConstVariableAttributor +senf::console::detail::VariableNodeCreator::add(DirectoryNode & node, + std::string const & name, + Variable & var) +{ + typename VariableAttributor::QueryOverload & queryOverload ( + node.add(name, typename detail::QueryVariable::Function( + detail::QueryVariable(var))).overload() ); + + return ConstVariableAttributor(queryOverload); +} + +template +prefix_ senf::console::VariableAttributor senf::console:: +senf_console_add_node(DirectoryNode & node, std::string const & name, Variable & var, int, + typename boost::disable_if< boost::is_convertible >::type *) +{ + return detail::VariableNodeCreator::add(node, name, var); +} + +template +prefix_ typename senf::console::detail::VariableNodeCreator::result_type +senf::console::senf_console_add_node(DirectoryNode & node, std::string const & name, + boost::reference_wrapper var, int) +{ + return detail::VariableNodeCreator::add(node, name, var.get()); +} + ///////////////////////////////cti.e/////////////////////////////////////// #undef prefix_