diff --git a/Scheduler/Console/Variables.cti b/Scheduler/Console/Variables.cti index 0e9367f73066cb493cb85fad1ce0311260f66d21..ef846d5defc67fa737cabb4da2cc74316de31042 100644 --- a/Scheduler/Console/Variables.cti +++ b/Scheduler/Console/Variables.cti @@ -195,6 +195,15 @@ senf::console::senf_console_add_node(DirectoryNode & node, std::string const & n return detail::VariableNodeCreator<Variable>::add(node, name, var.get()); } +template <class Variable, class Owner> +prefix_ senf::console::VariableAttributor<Variable> senf::console:: +senf_console_add_node(DirectoryNode & node, Owner & owner, std::string const & name, + Variable & var, int, + typename boost::disable_if< boost::is_convertible<Variable*, ScopedDirectoryBase*> >::type *) +{ + return detail::VariableNodeCreator<Variable>::add(node, name, var); +} + #endif ///////////////////////////////cti.e/////////////////////////////////////// diff --git a/Scheduler/Console/Variables.hh b/Scheduler/Console/Variables.hh index 1afc654c2fde2400cb088207ecd8acd7ae3668c8..74db97c78bc133a7c28bd1e0231baf2a3344c5b2 100644 --- a/Scheduler/Console/Variables.hh +++ b/Scheduler/Console/Variables.hh @@ -54,6 +54,11 @@ namespace console { senf_console_add_node(DirectoryNode & node, std::string const & name, boost::reference_wrapper<Variable> var, int); + template <class Variable, class Owner> + VariableAttributor<Variable> senf_console_add_node( + DirectoryNode & node, Owner & owner, std::string const & name, Variable & var, int, + typename boost::disable_if< boost::is_convertible<Variable*, ScopedDirectoryBase*> >::type * = 0); + #endif /** \brief Variable command attributes (const) diff --git a/Scheduler/Console/Variables.test.cc b/Scheduler/Console/Variables.test.cc index 0bcebc70f5e65c1be2b538c988217563fb58d524..58348f784e1afdefe208f4efc930bebd52c72b9f 100644 --- a/Scheduler/Console/Variables.test.cc +++ b/Scheduler/Console/Variables.test.cc @@ -93,6 +93,27 @@ BOOST_AUTO_UNIT_TEST(variables) .formatter(&testFormatter); } +namespace { + + class Test2 + { + public: + senf::console::ScopedDirectory<Test2> dir; + + Test2() : dir(this), var_(0) + { dir.add("var", var_); } + + private: + int var_; + }; + +} + +BOOST_AUTO_UNIT_TEST(memberVariables) +{ + Test2 test2ob; +} + #ifdef COMPILE_CHECK COMPILE_FAIL(constVariable)