Utils/Console: Add SENF_CONSOLE_REGISTER_ENUM 'key()' support
[senf.git] / senf / Utils / Console / ParsedCommand.cti
index 43a2cff..1d36bb4 100644 (file)
@@ -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 <g0dil@berlios.de>
@@ -45,7 +45,7 @@ senf::console::detail::ArgumentInfo<ParameterType>::create()
 
 template <class ParameterType>
 prefix_ senf::console::detail::ArgumentInfo<ParameterType>::ArgumentInfo()
-    : ArgumentInfoBase ( ArgumentTraits<ParameterType>::description(), 
+    : ArgumentInfoBase ( ArgumentTraits<ParameterType>::description(),
                          ArgumentTraits<ParameterType>::singleToken ),
       defaultValue ()
 {}
@@ -318,7 +318,7 @@ template <class Overload, unsigned index>
 prefix_
 senf::console::ParsedArgumentAttributor<Overload, index, false>::
 ParsedArgumentAttributor(typename Overload::ptr overload)
-    : ParsedArgumentAttributorBase< 
+    : ParsedArgumentAttributorBase<
           Overload, ParsedArgumentAttributor<Overload, index, false> > (overload, index)
 {}
 
@@ -361,9 +361,50 @@ namespace detail {
 
 }}}
 
+///////////////////////////////////////////////////////////////////////////
+
+template <class Signature>
+prefix_ senf::console::SimpleOverloadAttributor
+senf::console::factory::
+Command(boost::function<Signature> fn,
+        typename boost::enable_if_c<detail::ParsedCommandTraits<Signature>::is_simple>::type *)
+{
+    return SimpleOverloadAttributor(fn);
+}
+
+template <class Function>
+prefix_ senf::console::SimpleOverloadAttributor
+senf::console::factory::
+Command(Function fn,
+        typename boost::enable_if_c<detail::ParsedCommandTraits<Function>::is_simple>::type *)
+{
+    return SimpleOverloadAttributor(fn);
+}
+
+template <class Owner, class Member>
+prefix_ senf::console::SimpleOverloadAttributor
+senf::console::factory::
+Command(Member memfn, Owner * owner,
+        typename boost::enable_if<boost::is_member_function_pointer<Member> >::type *,
+        typename boost::enable_if_c<detail::ParsedCommandTraits<Member>::is_simple>::type *)
+{
+    return SimpleOverloadAttributor(senf::membind(memfn,owner));
+}
+
+template <class Owner, class Member>
+prefix_ senf::console::SimpleOverloadAttributor
+senf::console::factory::
+Command(Member memfn, Owner const * owner,
+        typename boost::enable_if<boost::is_member_function_pointer<Member> >::type *,
+        typename boost::enable_if_c<detail::ParsedCommandTraits<Member>::is_simple>::type *)
+{
+    return SimpleOverloadAttributor(senf::membind(memfn,owner));
+}
+
 template <class CastTo, class Signature>
 prefix_ typename senf::console::detail::ParsedCommandTraits<CastTo>::Attributor
-senf::console::factory::Command(boost::function<Signature> fn)
+senf::console::factory::
+Command(boost::function<Signature> fn)
 {
     return detail::addOverloadedCommandNode<CastTo>(fn);
 }
@@ -372,14 +413,16 @@ template <class CastTo, class Function>
 prefix_ typename senf::console::detail::ParsedCommandTraits<CastTo>::Attributor
 senf::console::factory::
 Command(Function fn,
-        typename boost::enable_if_c<detail::ParsedCommandTraits<Function>::is_callable>::type *)
+        typename boost::enable_if_c<detail::ParsedCommandTraits<Function>::is_callable>::type *,
+        typename boost::disable_if<boost::is_member_function_pointer<Function> >::type *)
 {
     return detail::addOverloadedCommandNode<CastTo>(fn);
 }
 
 template <class Signature>
 prefix_ typename senf::console::detail::ParsedCommandTraits<Signature>::Attributor
-senf::console::factory::Command(boost::function<Signature> fn)
+senf::console::factory::
+Command(boost::function<Signature> fn)
 {
     return detail::addOverloadedCommandNode<Signature>(fn);
 }
@@ -388,35 +431,44 @@ template <class Function>
 prefix_ typename senf::console::detail::ParsedCommandTraits<Function>::Attributor
 senf::console::factory::
 Command(Function fn,
-        typename boost::enable_if_c<detail::ParsedCommandTraits<Function>::is_callable>::type *)
+        typename boost::enable_if_c<detail::ParsedCommandTraits<Function>::is_callable>::type *,
+        typename boost::disable_if<boost::is_member_function_pointer<Function> >::type *)
 {
     return detail::addOverloadedCommandNode<Function>(fn);
 }
 
 template <class Owner, class Member>
 prefix_ typename senf::console::detail::ParsedCommandTraits<Member>::Attributor
-senf::console::factory::BoundCommand(Owner * owner, Member memfn)
+senf::console::factory::
+Command(Member memfn, Owner * owner,
+             typename boost::enable_if<boost::is_member_function_pointer<Member> >::type *)
 {
     return detail::addOverloadedCommandNode<Member>(senf::membind(memfn,owner));
 }
 
 template <class Owner, class Member>
 prefix_ typename senf::console::detail::ParsedCommandTraits<Member>::Attributor
-senf::console::factory::BoundCommand(Owner const * owner, Member memfn)
+senf::console::factory::
+Command(Member memfn, Owner const * owner,
+             typename boost::enable_if<boost::is_member_function_pointer<Member> >::type *)
 {
     return detail::addOverloadedCommandNode<Member>(senf::membind(memfn,owner));
 }
 
 template <class CastTo, class Owner, class Member>
 prefix_ typename senf::console::detail::ParsedCommandTraits<CastTo>::Attributor
-senf::console::factory::BoundCommand(Owner * owner, Member memfn)
+senf::console::factory::
+Command(Member memfn, Owner * owner,
+             typename boost::enable_if<boost::is_member_function_pointer<Member> >::type *)
 {
     return detail::addOverloadedCommandNode<CastTo>(senf::membind(memfn,owner));
 }
 
 template <class CastTo, class Owner, class Member>
 prefix_ typename senf::console::detail::ParsedCommandTraits<CastTo>::Attributor
-senf::console::factory::BoundCommand(Owner const * owner, Member memfn)
+senf::console::factory::
+Command(Member memfn, Owner const * owner,
+             typename boost::enable_if<boost::is_member_function_pointer<Member> >::type *)
 {
     return detail::addOverloadedCommandNode<CastTo>(senf::membind(memfn,owner));
 }