X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Console%2FVariables.cti;h=0e9367f73066cb493cb85fad1ce0311260f66d21;hb=1863c038d0400159ce49b851a5b81c2ce698c684;hp=f074c5f3d1156dab3abc7c8a8e86f1fde4d3ec90;hpb=80c6cb7ba9ad7776824c84809f422209adf27331;p=senf.git diff --git a/Console/Variables.cti b/Console/Variables.cti index f074c5f..0e9367f 100644 --- a/Console/Variables.cti +++ b/Console/Variables.cti @@ -49,8 +49,9 @@ prefix_ Variable const & senf::console::detail::QueryVariable::operato // senf::console::detail::SetVariable template -prefix_ senf::console::detail::SetVariable::SetVariable(Variable & var) - : var_ (var) +prefix_ senf::console::detail::SetVariable::SetVariable(Variable & var, + OnChangeHandler handler) + : var_ (var), handler_ (handler) {} template @@ -66,12 +67,6 @@ prefix_ void senf::console::detail::SetVariable::operator()(Variable c var_ = value; } -template -prefix_ void senf::console::detail::SetVariable::onChange(OnChangeHandler handler) -{ - handler_ = handler; -} - /////////////////////////////////////////////////////////////////////////// // senf::console::ConstVariableAttributor @@ -118,6 +113,15 @@ senf::console::VariableAttributor::typeName(std::string const & name) template prefix_ typename senf::console::VariableAttributor +senf::console::VariableAttributor::onChange(OnChangeHandler handler) +{ + setOverload_.function( + boost::bind(detail::SetVariable(var_, handler),_2)); + return *this; +} + +template +prefix_ typename senf::console::VariableAttributor senf::console::VariableAttributor::doc(std::string const & doc) { ConstVariableAttributor::doc(doc); @@ -135,8 +139,9 @@ senf::console::VariableAttributor::formatter(Formatter formatter) template prefix_ senf::console::VariableAttributor::VariableAttributor(QueryOverload & queryOverload, - SetOverload & setOverload) - : ConstVariableAttributor (queryOverload), setOverload_ (setOverload) + SetOverload & setOverload, + Variable & var) + : ConstVariableAttributor (queryOverload), setOverload_ (setOverload), var_ (var) {} /////////////////////////////////////////////////////////////////////////// @@ -156,7 +161,7 @@ senf::console::detail::VariableNodeCreator::add(DirectoryNode node.add(name, typename detail::QueryVariable::Function( detail::QueryVariable(var))).overload() ); - return VariableAttributor(queryOverload, setOverload); + return VariableAttributor(queryOverload, setOverload, var); } template @@ -172,6 +177,8 @@ senf::console::detail::VariableNodeCreator::add(DirectoryNode & return ConstVariableAttributor(queryOverload); } +#ifndef DOXYGEN + template prefix_ senf::console::VariableAttributor senf::console:: senf_console_add_node(DirectoryNode & node, std::string const & name, Variable & var, int, @@ -188,6 +195,8 @@ senf::console::senf_console_add_node(DirectoryNode & node, std::string const & n return detail::VariableNodeCreator::add(node, name, var.get()); } +#endif + ///////////////////////////////cti.e/////////////////////////////////////// #undef prefix_