Fix documentation build under maverick (doxygen 1.7.1)
[senf.git] / senf / Utils / Console / Traits.ih
index a3a0d69..faac9a3 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>
@@ -37,7 +37,7 @@
 #include <boost/algorithm/string/case_conv.hpp>
 #include <boost/mpl/if.hpp>
 
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 
 namespace senf {
 namespace console {
@@ -46,7 +46,7 @@ namespace console {
     template <class _> struct ReturnValueTraits;
 
 namespace detail {
-    
+
     template <class CharT>
     struct MatchingShortType
         : public boost::mpl::if_c<std::numeric_limits<CharT>::is_signed,short,unsigned short>
@@ -73,7 +73,7 @@ namespace detail {
     struct StringILess
     {
         bool operator()(std::string const & left, std::string const & right) const
-            { return boost::algorithm::to_lower_copy(left) 
+            { return boost::algorithm::to_lower_copy(left)
                   < boost::algorithm::to_lower_copy(right); }
     };
 
@@ -82,8 +82,29 @@ namespace detail {
     long parseEnum(EnumTable const & table, ParseCommandInfo::TokensRange const & tokens);
     std::string formatEnum(EnumTable const & table, long value);
 
-#   define SENF_CONSOLE_REGISTER_ENUM_ELT(r,d,e) \
-        ( BOOST_PP_STRINGIZE(e), static_cast<long>(d e) )
+#   define SENF_CONSOLE_REGISTER_ENUM_ELT(r,d,e)                        \
+        BOOST_PP_IF( SENF_CONSOLE_REGISTER_ENUM_HASKEY(e),              \
+                     SENF_CONSOLE_REGISTER_ENUM_WITHKEY,                \
+                     SENF_CONSOLE_REGISTER_ENUM_NOKEY )(d, e)
+
+#   define SENF_CONSOLE_REGISTER_ENUM_GOBBLE__key(k,e)
+#   define SENF_CONSOLE_REGISTER_ENUM_GET_KEY__key(k,e) k
+#   define SENF_CONSOLE_REGISTER_ENUM_GET_ENUM__key(k,e) e
+#   define SENF_CONSOLE_REGISTER_ENUM_HASKEY(e)                         \
+        BOOST_PP_IS_EMPTY( SENF_CAT_RECURS1(SENF_CONSOLE_REGISTER_ENUM_GOBBLE__, e) )
+
+#   define SENF_CONSOLE_REGISTER_ENUM_KEY_GETENUM(e)                    \
+        SENF_CAT_RECURS2(SENF_CONSOLE_REGISTER_ENUM_GET_ENUM__, e)
+#   define SENF_CONSOLE_REGISTER_ENUM_KEY_GETKEY(e)                     \
+        SENF_CAT_RECURS3(SENF_CONSOLE_REGISTER_ENUM_GET_KEY__, e)
+
+#   define SENF_CONSOLE_REGISTER_ENUM_NOKEY(prefix, e)                  \
+        ( BOOST_PP_STRINGIZE(e), static_cast<long>(prefix e) )
+
+#   define SENF_CONSOLE_REGISTER_ENUM_WITHKEY(prefix, e)                \
+        ( SENF_CONSOLE_REGISTER_ENUM_KEY_GETKEY(e),                     \
+          static_cast<long>(prefix SENF_CONSOLE_REGISTER_ENUM_KEY_GETENUM(e)) )
+
 
 #   define SENF_CONSOLE_REGISTER_ENUM_(Prefix, Type, Values)                                      \
         inline senf::console::detail::EnumTable & senf_console_enum_table(Prefix Type)            \
@@ -111,7 +132,7 @@ namespace detail {
 
 }}}
 
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
 #endif
 
 \f