X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Console%2FVariables.cti;h=c5ca630da1185432311c1adeb4d0fdfd322fd279;hb=1b1d76302a5d61e918ef71f1c8e11f80ac1262e2;hp=f074c5f3d1156dab3abc7c8a8e86f1fde4d3ec90;hpb=80c6cb7ba9ad7776824c84809f422209adf27331;p=senf.git diff --git a/Console/Variables.cti b/Console/Variables.cti index f074c5f..c5ca630 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