X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FUtils%2FConsole%2FVariables.cti;h=cdf72ec7e07502137129539f76c3be6e371081d1;hb=6aae6e526573187ece558842e928578e5aa4cc4c;hp=1d19fbd7b300e2dcf9e019a5d2e6bc6f2d601184;hpb=084d18afd1abb3c6b19de612dbdf4dbc40ffd795;p=senf.git diff --git a/senf/Utils/Console/Variables.cti b/senf/Utils/Console/Variables.cti index 1d19fbd..cdf72ec 100644 --- a/senf/Utils/Console/Variables.cti +++ b/senf/Utils/Console/Variables.cti @@ -1,6 +1,6 @@ // $Id$ // -// Copyright (C) 2008 +// Copyright (C) 2008 // Fraunhofer Institute for Open Communication Systems (FOKUS) // Competence Center NETwork research (NET), St. Augustin, GERMANY // Stefan Bund @@ -39,6 +39,13 @@ prefix_ senf::console::detail::QueryVariable::QueryVariable(Variable c {} template +prefix_ typename senf::console::detail::QueryVariable::Traits::Overload::ptr +senf::console::detail::QueryVariable::create(Variable const & var) +{ + return CreateOverload::create(Function(QueryVariable(var))); +} + +template prefix_ Variable const & senf::console::detail::QueryVariable::operator()() const { @@ -55,6 +62,15 @@ prefix_ senf::console::detail::SetVariable::SetVariable(Variable & var {} template +prefix_ typename senf::console::detail::SetVariable::Traits::Overload::ptr +senf::console::detail::SetVariable::create(Variable & var) +{ + typename Traits::Overload::ptr overload (CreateOverload::create(Function(SetVariable(var)))); + overload->arg(0).name = "new_value"; + return overload; +} + +template prefix_ void senf::console::detail::SetVariable::operator()(Variable const & value) const { @@ -68,215 +84,150 @@ prefix_ void senf::console::detail::SetVariable::operator()(Variable c } /////////////////////////////////////////////////////////////////////////// -// senf::console::ConstVariableAttributor +// senf::console::ConstVariableFactory template -prefix_ senf::console::ConstVariableAttributor -senf::console::ConstVariableAttributor::doc(std::string const & doc) +prefix_ senf::console::factory::ConstVariableFactory +senf::console::factory::ConstVariableFactory::doc(std::string const & doc) { - queryOverload_.node().doc(doc); + doc_ = doc; return *this; } template -prefix_ senf::console::ConstVariableAttributor -senf::console::ConstVariableAttributor::shortdoc(std::string const & doc) +prefix_ senf::console::factory::ConstVariableFactory +senf::console::factory::ConstVariableFactory::shortdoc(std::string const & doc) { - queryOverload_.node().shortdoc(doc); + shortdoc_ = doc; return *this; } template -prefix_ senf::console::ConstVariableAttributor -senf::console::ConstVariableAttributor::formatter(Formatter formatter) +prefix_ senf::console::factory::ConstVariableFactory +senf::console::factory::ConstVariableFactory::formatter(Formatter formatter) { - queryOverload_.formatter(formatter); + queryOverload_->formatter(formatter); return *this; } template -prefix_ senf::console::ConstVariableAttributor:: -ConstVariableAttributor(QueryOverload & queryOverload) - : queryOverload_ (queryOverload) -{} - -template prefix_ senf::console::OverloadedCommandNode & -senf::console::ConstVariableAttributor::node() +senf::console::factory::ConstVariableFactory::create(DirectoryNode & dir, + std::string const & name) const { - return queryOverload_.node(); + OverloadedCommandNode & node (OverloadedCommandNode::insertOverload(dir, name, queryOverload_)); + if (doc_) node.doc(*doc_); + if (shortdoc_) node.shortdoc(*shortdoc_); + return node; } template -prefix_ senf::console::ConstVariableAttributor:: -operator senf::console::OverloadedCommandNode &() - const -{ - return node(); -} +prefix_ senf::console::factory::ConstVariableFactory:: +ConstVariableFactory(Variable const & var) + : queryOverload_ (detail::QueryVariable::create(var)) +{} /////////////////////////////////////////////////////////////////////////// -// senf::console::VariableAttributor +// senf::console::VariableFactory template -prefix_ senf::console::VariableAttributor -senf::console::VariableAttributor::parser(Parser parser) +prefix_ typename senf::console::factory::VariableFactory +senf::console::factory::VariableFactory::parser(Parser parser) { - setOverload_.template arg<0>().parser = parser; + setOverload_->template arg<0>().parser = parser; return *this; } template -prefix_ senf::console::VariableAttributor -senf::console::VariableAttributor::typeName(std::string const & name) +prefix_ typename senf::console::factory::VariableFactory +senf::console::factory::VariableFactory::typeName(std::string const & name) { - setOverload_.arg(0).type = name; + setOverload_->arg(0).type = name; return *this; } template -prefix_ typename senf::console::VariableAttributor -senf::console::VariableAttributor::onChange(OnChangeHandler handler) +prefix_ typename senf::console::factory::VariableFactory +senf::console::factory::VariableFactory::onChange(OnChangeHandler handler) { - setOverload_.function( + 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) +prefix_ typename senf::console::factory::VariableFactory +senf::console::factory::VariableFactory::doc(std::string const & doc) { - ConstVariableAttributor::doc(doc); + ConstVariableFactory::doc(doc); return *this; } template -prefix_ typename senf::console::VariableAttributor -senf::console::VariableAttributor::shortdoc(std::string const & doc) +prefix_ typename senf::console::factory::VariableFactory +senf::console::factory::VariableFactory::shortdoc(std::string const & doc) { - ConstVariableAttributor::shortdoc(doc); + ConstVariableFactory::shortdoc(doc); return *this; } template -prefix_ typename senf::console::VariableAttributor -senf::console::VariableAttributor::formatter(Formatter formatter) +prefix_ typename senf::console::factory::VariableFactory +senf::console::factory::VariableFactory::formatter(Formatter formatter) { - ConstVariableAttributor::formatter(formatter); + ConstVariableFactory::formatter(formatter); return *this; } template -prefix_ -senf::console::VariableAttributor::VariableAttributor(QueryOverload & queryOverload, - SetOverload & setOverload, - Variable & var) - : ConstVariableAttributor (queryOverload), setOverload_ (setOverload), var_ (var) -{} - -/////////////////////////////////////////////////////////////////////////// - -template -prefix_ senf::console::VariableAttributor -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))) - .arg("new_value") - .overload() ); - typename VariableAttributor::QueryOverload & queryOverload ( - node.add(name, typename detail::QueryVariable::Function( - detail::QueryVariable(var))).overload() ); - - return VariableAttributor(queryOverload, setOverload, var); -} - -template -prefix_ senf::console::ConstVariableAttributor -senf::console::detail::VariableNodeCreator::add(DirectoryNode & node, - std::string const & name, - Variable const & var) +prefix_ senf::console::OverloadedCommandNode & +senf::console::factory::VariableFactory::create(DirectoryNode & dir, + std::string const & name) + const { - typename VariableAttributor::QueryOverload & queryOverload ( - node.add(name, typename detail::QueryVariable::Function( - detail::QueryVariable(var))).overload() ); - - return ConstVariableAttributor(queryOverload); + OverloadedCommandNode & node (ConstVariableFactory::create(dir,name)); + node.add(setOverload_); + return node; } -#ifndef DOXYGEN - template -prefix_ typename senf::console::detail::VariableNodeCreator::result_type -senf::console:: -senf_console_add_node(DirectoryNode & node, std::string const & name, Variable & var, int, - typename boost::disable_if< boost::is_convertible >::type *, - typename boost::disable_if< boost::is_convertible >::type *, - typename boost::disable_if_c::is_callable>::type *) -{ - return detail::VariableNodeCreator::add(node, name, var); -} +prefix_ senf::console::factory::VariableFactory::VariableFactory(Variable & var) + : ConstVariableFactory (var), + setOverload_ (detail::SetVariable::create(var)), + var_ (var) +{} -template -prefix_ typename senf::console::detail::VariableNodeCreator::result_type -senf::console:: -senf_console_add_node(DirectoryNode & node, std::string const & name, Variable const & var, int, - typename boost::disable_if< boost::is_convertible >::type *, - typename boost::disable_if< boost::is_convertible >::type *, - typename boost::disable_if_c::is_callable>::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) +template +prefix_ senf::console::factory::VariableFactory +senf::console::factory::Variable(Var & var) { - return detail::VariableNodeCreator::add(node, name, var.get()); + return VariableFactory(var); } -template -prefix_ typename senf::console::detail::VariableNodeCreator::result_type -senf::console:: -senf_console_add_node(DirectoryNode & node, Owner & owner, std::string const & name, - Variable & var, int, - typename boost::disable_if< boost::is_convertible >::type *, - typename boost::disable_if< boost::is_convertible >::type *, - typename boost::disable_if_c::is_callable>::type *) +template +prefix_ senf::console::factory::VariableFactory +senf::console::factory::Variable(boost::reference_wrapper var) { - return detail::VariableNodeCreator::add(node, name, var); + return VariableFactory(var); } -template -prefix_ typename senf::console::detail::VariableNodeCreator::result_type -senf::console:: -senf_console_add_node(DirectoryNode & node, Owner & owner, std::string const & name, - Variable const & var, int, - typename boost::disable_if< boost::is_convertible >::type *, - typename boost::disable_if< boost::is_convertible >::type *, - typename boost::disable_if_c::is_callable>::type *) +template +prefix_ senf::console::factory::ConstVariableFactory +senf::console::factory::Variable(Var const & var) { - return detail::VariableNodeCreator::add(node, name, var); + return ConstVariableFactory(var); } -template -prefix_ typename senf::console::detail::VariableNodeCreator::result_type -senf::console::senf_console_add_node(DirectoryNode & node, Owner &, - std::string const & name, - boost::reference_wrapper var, int) +template +prefix_ senf::console::factory::ConstVariableFactory +senf::console::factory::Variable(boost::reference_wrapper var) { - return detail::VariableNodeCreator::add(node, name, var.get()); + return ConstVariableFactory(var); } -#endif - ///////////////////////////////cti.e/////////////////////////////////////// #undef prefix_