Scheduler/Console: Add missing Node conversion operator for to variable attributor
[senf.git] / Scheduler / Console / Variables.cti
index ef846d5..3c7fd8e 100644 (file)
@@ -92,6 +92,22 @@ ConstVariableAttributor(QueryOverload & queryOverload)
     : queryOverload_ (queryOverload)
 {}
 
+template <class Variable>
+prefix_ senf::console::OverloadedCommandNode &
+senf::console::ConstVariableAttributor<Variable>::node()
+    const
+{
+    return queryOverload_.node();
+}
+
+template <class Variable>
+prefix_ senf::console::ConstVariableAttributor<Variable>::
+operator senf::console::OverloadedCommandNode &()
+    const
+{
+    return node();
+}
+
 ///////////////////////////////////////////////////////////////////////////
 // senf::console::VariableAttributor<Variable>
 
@@ -182,7 +198,8 @@ senf::console::detail::VariableNodeCreator<Variable, true>::add(DirectoryNode &
 template <class Variable>
 prefix_ senf::console::VariableAttributor<Variable> senf::console::
 senf_console_add_node(DirectoryNode & node, std::string const & name, Variable & var, int,
-                      typename boost::disable_if< boost::is_convertible<Variable*, ScopedDirectoryBase*> >::type *)
+                      typename boost::disable_if< boost::is_convertible<Variable*, ScopedDirectoryBase*> >::type *,
+                      typename boost::disable_if_c<detail::ParsedCommandTraits<Variable>::is_callable>::type *)
 {
     return detail::VariableNodeCreator<Variable>::add(node, name, var);
 }
@@ -197,13 +214,23 @@ senf::console::senf_console_add_node(DirectoryNode & node, std::string const & n
 
 template <class Variable, class Owner>
 prefix_ senf::console::VariableAttributor<Variable> senf::console::
-senf_console_add_node(DirectoryNode & node, Owner & owner, std::string const & name,
+senf_console_add_node(DirectoryNode & node, Owner &, std::string const & name,
                       Variable & var, int,
-                      typename boost::disable_if< boost::is_convertible<Variable*, ScopedDirectoryBase*> >::type *)
+                      typename boost::disable_if< boost::is_convertible<Variable*, ScopedDirectoryBase*> >::type *,
+                      typename boost::disable_if_c<detail::ParsedCommandTraits<Variable>::is_callable>::type *)
 {
     return detail::VariableNodeCreator<Variable>::add(node, name, var);
 }
 
+template <class Variable, class Owner>
+prefix_ typename senf::console::detail::VariableNodeCreator<Variable>::result_type
+senf::console::senf_console_add_node(DirectoryNode & node, Owner &,
+                                     std::string const & name,
+                                     boost::reference_wrapper<Variable> var, int)
+{
+    return detail::VariableNodeCreator<Variable>::add(node, name, var.get());
+}
+
 #endif
 
 ///////////////////////////////cti.e///////////////////////////////////////