Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r73975 - in sandbox/enums/boost/enums: pp scoped
From: vicente.botet_at_[hidden]
Date: 2011-08-20 22:02:27


Author: viboes
Date: 2011-08-20 22:02:26 EDT (Sat, 20 Aug 2011)
New Revision: 73975
URL: http://svn.boost.org/trac/boost/changeset/73975

Log:
Enums: Change NAMESPACE_CLASS by QNAME
Text files modified:
   sandbox/enums/boost/enums/pp/enum_declaration.hpp | 15 +++++-
   sandbox/enums/boost/enums/pp/namespaces.hpp | 44 +++++++++++++++++---
   sandbox/enums/boost/enums/scoped/emulation.hpp | 87 +++++++++++++++++----------------------
   3 files changed, 86 insertions(+), 60 deletions(-)

Modified: sandbox/enums/boost/enums/pp/enum_declaration.hpp
==============================================================================
--- sandbox/enums/boost/enums/pp/enum_declaration.hpp (original)
+++ sandbox/enums/boost/enums/pp/enum_declaration.hpp 2011-08-20 22:02:26 EDT (Sat, 20 Aug 2011)
@@ -18,7 +18,7 @@
 #include <boost/enums/pp/namespaces.hpp>
 
 #include <boost/preprocessor/seq.hpp>
-//#include <boost/preprocessor.hpp>
+#include <string>
 
 /** @file
 
@@ -27,8 +27,7 @@
 
 
  */
-
-#define BOOST_ENUMS_ENUM_DCL_STR_TO_ID(P, ENUM, ED) \
+#define BOOST_ENUMS_ENUM_DCL_STR_TO_ID2(P, ENUM, ED) \
   if (strcmp( \
         str, \
         BOOST_ENUMS_ENUMERATOR_DEFINITION_STR(ED) \
@@ -39,6 +38,16 @@
             ); \
   }
 
+#define BOOST_ENUMS_ENUM_DCL_STR_TO_ID(P, ENUM, ED) \
+ if (std::string(str)== \
+ BOOST_ENUMS_ENUMERATOR_DEFINITION_STR(ED) \
+ ) \
+ { \
+ return boost::conversion::explicit_convert_to<ENUM>( \
+ ENUM::BOOST_ENUMS_ENUMERATOR_DEFINITION_ID(ED) \
+ ); \
+ }
+
 #define BOOST_ENUMS_ENUM_DCL_ID_TO_STR(P, ENUM, ED) \
   case ENUM::BOOST_ENUMS_ENUMERATOR_DEFINITION_ID(ED) : \
     return(BOOST_ENUMS_ENUMERATOR_DEFINITION_STR(ED));

Modified: sandbox/enums/boost/enums/pp/namespaces.hpp
==============================================================================
--- sandbox/enums/boost/enums/pp/namespaces.hpp (original)
+++ sandbox/enums/boost/enums/pp/namespaces.hpp 2011-08-20 22:02:26 EDT (Sat, 20 Aug 2011)
@@ -63,6 +63,9 @@
 #define BOOST_ENUMS_NAMESPACES_CLASS_NS(SEQ) \
   BOOST_PP_SEQ_POP_BACK(SEQ)
 
+#define BOOST_ENUMS_QNAME_NS(QNAME) \
+ BOOST_PP_SEQ_POP_BACK(QNAME)
+
 /**
 
  @brief Get the CLASS part of a @c NAMESPACES_CLASS.
@@ -78,6 +81,8 @@
 #define BOOST_ENUMS_NAMESPACES_CLASS_ENUM(SEQ) \
   BOOST_PP_SEQ_ELEM(BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(SEQ)), SEQ)
 
+#define BOOST_ENUMS_QNAME_NAME(QNAME) \
+ BOOST_PP_SEQ_ELEM(BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(QNAME)), QNAME)
 /**
 
  @brief Generate the opening of the namespaces in @c NAMESPACES.
@@ -108,6 +113,18 @@
     , BOOST_ENUMS_NAMESPACES_OPEN_NOT_EMPTY \
   )(SEQ)
 
+#define BOOST_ENUMS_QNAME_OPEN_NOT_EMPTY(QNAME) \
+ BOOST_PP_SEQ_FOR_EACH(BOOST_ENUMS_NAMESPACES_OPEN_, ~, BOOST_ENUMS_QNAME_NS(QNAME))
+
+#define BOOST_ENUMS_QNAME_OPEN_EMPTY(QNAME) \
+
+#define BOOST_ENUMS_QNAME_OPEN(QNAME) \
+ BOOST_PP_IIF( \
+ BOOST_PP_EQUAL(BOOST_PP_SEQ_SIZE(QNAME),1) \
+ , BOOST_ENUMS_QNAME_OPEN_EMPTY \
+ , BOOST_ENUMS_QNAME_OPEN_NOT_EMPTY \
+ )(QNAME)
+
 /**
 
  @brief Generate the closing of the namespaces in @c NAMESPACES.
@@ -134,6 +151,19 @@
     , BOOST_ENUMS_NAMESPACES_CLOSE_NOT_EMPTY \
   )(SEQ)
 
+
+#define BOOST_ENUMS_QNAME_CLOSE_EMPTY(QNAME)
+
+#define BOOST_ENUMS_QNAME_CLOSE_NOT_EMPTY(QNAME) \
+ BOOST_PP_SEQ_FOR_EACH(BOOST_ENUMS_NAMESPACES_CLOSE_, ~, BOOST_ENUMS_QNAME_NS(QNAME))
+
+#define BOOST_ENUMS_QNAME_CLOSE(QNAME) \
+ BOOST_PP_IIF( \
+ BOOST_PP_EQUAL(BOOST_PP_SEQ_SIZE(QNAME),1) \
+ , BOOST_ENUMS_QNAME_CLOSE_EMPTY \
+ , BOOST_ENUMS_QNAME_CLOSE_NOT_EMPTY \
+ )(QNAME)
+
 #ifndef BOOST_ENUMS_DOXYGEN_INVOKED
 // (NS1) ... (NSn)
 // ==>
@@ -166,18 +196,18 @@
  @endcode
  */
 
-#define BOOST_ENUMS_NAMESPACES_CLASS_QNAME_NS_C(SEQ) \
- BOOST_ENUMS_NAMESPACES_CLASS_QNAME_PRE(BOOST_ENUMS_NAMESPACES_CLASS_NS(SEQ)) BOOST_ENUMS_NAMESPACES_CLASS_ENUM(SEQ)
+#define BOOST_ENUMS_NAMESPACES_CLASS_QNAME_NS_C(QNAME) \
+ BOOST_ENUMS_NAMESPACES_CLASS_QNAME_PRE(BOOST_ENUMS_QNAME_NS(QNAME)) BOOST_ENUMS_QNAME_NAME(QNAME)
 
-#define BOOST_ENUMS_NAMESPACES_CLASS_QNAME_C(SEQ) \
- BOOST_ENUMS_NAMESPACES_CLASS_ENUM(SEQ)
+#define BOOST_ENUMS_NAMESPACES_CLASS_QNAME_C(QNAME) \
+ BOOST_ENUMS_QNAME_NAME(QNAME)
 
 
-#define BOOST_ENUMS_NAMESPACES_CLASS_QNAME(SEQ) \
+#define BOOST_ENUMS_NAMESPACES_CLASS_QNAME(QNAME) \
   BOOST_PP_IIF( \
- BOOST_PP_EQUAL(BOOST_PP_SEQ_SIZE(SEQ),1) \
+ BOOST_PP_EQUAL(BOOST_PP_SEQ_SIZE(QNAME),1) \
     , BOOST_ENUMS_NAMESPACES_CLASS_QNAME_C \
     , BOOST_ENUMS_NAMESPACES_CLASS_QNAME_NS_C \
- )(SEQ)
+ )(QNAME)
 
 #endif // BOOST_ENUMS_PP_NAMESPACES_HPP

Modified: sandbox/enums/boost/enums/scoped/emulation.hpp
==============================================================================
--- sandbox/enums/boost/enums/scoped/emulation.hpp (original)
+++ sandbox/enums/boost/enums/scoped/emulation.hpp 2011-08-20 22:02:26 EDT (Sat, 20 Aug 2011)
@@ -24,7 +24,7 @@
 #include <boost/enums/scoped/is_enum.hpp>
 #include <boost/conversion/explicit_convert_to.hpp>
 #include <boost/enums/pp/namespaces.hpp>
-#include <cstring>
+//#include <cstring>
 
 #ifndef BOOST_ENUMS_DOXYGEN_INVOKED
 
@@ -316,12 +316,6 @@
   BOOST_ENUMS_SPECIALIZATIONS(BOOST_ENUMS_NAMESPACES_CLASS_QNAME(NS_EC), UT) \
   BOOST_ENUMS_DETAIL_CONVERSIONS_SPECIALIZATIONS(BOOST_ENUMS_NAMESPACES_CLASS_QNAME(NS_EC),UT)
 
-#if 0
- BOOST_ENUMS_NAMESPACES_OPEN(BOOST_ENUMS_NAMESPACES_CLASS_NS(NS_EC)) \
- BOOST_ENUMS_DETAIL_FRIEND_CONVERSIONS(BOOST_ENUMS_NAMESPACES_CLASS_ENUM(NS_EC), UT) \
- BOOST_ENUMS_NAMESPACES_CLOSE(BOOST_ENUMS_NAMESPACES_CLASS_NS(NS_EC))
-#endif
-
 #else // BOOST_NO_SCOPED_ENUMS
 
   #define BOOST_ENUM_CLASS_START(EC, UT) \
@@ -384,51 +378,44 @@
   BOOST_ENUMS_SPECIALIZATIONS(BOOST_ENUMS_NAMESPACES_CLASS_QNAME(NS_EC), UT) \
   BOOST_ENUMS_DETAIL_CONVERSIONS_SPECIALIZATIONS(BOOST_ENUMS_NAMESPACES_CLASS_QNAME(NS_EC),UT)
 
-#if 0
- BOOST_ENUMS_NAMESPACES_OPEN(BOOST_ENUMS_NAMESPACES_CLASS_NS(NS_EC)) \
- BOOST_ENUMS_DETAIL_FRIEND_CONVERSIONS(BOOST_ENUMS_NAMESPACES_CLASS_ENUM(NS_EC), UT) \
- BOOST_ENUMS_NAMESPACES_CLOSE(BOOST_ENUMS_NAMESPACES_CLASS_NS(NS_EC))
-#endif
-
-
 #endif
-#define BOOST_ENUM_NS_CLASS_START(NS_EC, UT) \
- BOOST_ENUMS_NAMESPACES_OPEN(BOOST_ENUMS_NAMESPACES_CLASS_NS(NS_EC)) \
- BOOST_ENUM_CLASS_START(BOOST_ENUMS_NAMESPACES_CLASS_ENUM(NS_EC), UT)
-
-#define BOOST_ENUM_NS_TYPE_START(NS_EC, UT) \
- BOOST_ENUMS_NAMESPACES_OPEN(BOOST_ENUMS_NAMESPACES_CLASS_NS(NS_EC)) \
- BOOST_ENUM_TYPE_START(BOOST_ENUMS_NAMESPACES_CLASS_ENUM(NS_EC), UT)
-
-#define BOOST_ENUM_NS_CLASS_END(NS_EC, UT) \
- BOOST_ENUM_CLASS_END(BOOST_ENUMS_NAMESPACES_CLASS_ENUM(NS_EC), UT) \
- BOOST_ENUMS_NAMESPACES_CLOSE(BOOST_ENUMS_NAMESPACES_CLASS_NS(NS_EC)) \
- BOOST_ENUMS_OUT(NS_EC, UT)
-
-
-#define BOOST_ENUM_NS_TYPE_END(NS_EC, UT) \
- BOOST_ENUM_TYPE_END(BOOST_ENUMS_NAMESPACES_CLASS_ENUM(NS_EC), UT) \
- BOOST_ENUMS_NAMESPACES_CLOSE(BOOST_ENUMS_NAMESPACES_CLASS_NS(NS_EC)) \
- BOOST_ENUMS_OUT(NS_EC, UT)
-
-#define BOOST_ENUM_NS_CLASS_NO_CONS_END(NS_EC, UT) \
- BOOST_ENUM_CLASS_NO_CONS_END(BOOST_ENUMS_NAMESPACES_CLASS_ENUM(NS_EC), UT) \
- BOOST_ENUMS_NAMESPACES_CLOSE(BOOST_ENUMS_NAMESPACES_CLASS_NS(NS_EC)) \
- BOOST_ENUMS_OUT(NS_EC, UT)
+#define BOOST_ENUM_NS_CLASS_START(QNAME, UT) \
+ BOOST_ENUMS_QNAME_OPEN(QNAME) \
+ BOOST_ENUM_CLASS_START(BOOST_ENUMS_QNAME_NAME(QNAME), UT)
+
+#define BOOST_ENUM_NS_TYPE_START(QNAME, UT) \
+ BOOST_ENUMS_QNAME_OPEN(QNAME) \
+ BOOST_ENUM_TYPE_START(BOOST_ENUMS_QNAME_NAME(QNAME), UT)
+
+#define BOOST_ENUM_NS_CLASS_END(QNAME, UT) \
+ BOOST_ENUM_CLASS_END(BOOST_ENUMS_QNAME_NAME(QNAME), UT) \
+ BOOST_ENUMS_QNAME_CLOSE(QNAME) \
+ BOOST_ENUMS_OUT(QNAME, UT)
+
+
+#define BOOST_ENUM_NS_TYPE_END(QNAME, UT) \
+ BOOST_ENUM_TYPE_END(BOOST_ENUMS_QNAME_NAME(QNAME), UT) \
+ BOOST_ENUMS_QNAME_CLOSE(QNAME) \
+ BOOST_ENUMS_OUT(QNAME, UT)
+
+#define BOOST_ENUM_NS_CLASS_NO_CONS_END(QNAME, UT) \
+ BOOST_ENUM_CLASS_NO_CONS_END(BOOST_ENUMS_QNAME_NAME(QNAME), UT) \
+ BOOST_ENUMS_QNAME_CLOSE(QNAME) \
+ BOOST_ENUMS_OUT(QNAME, UT)
 
 #define BOOST_ENUM_NS_TYPE_NO_CONS_END(NS_EC, UT) \
- BOOST_ENUM_TYPE_NO_CONS_END(BOOST_ENUMS_NAMESPACES_CLASS_ENUM(NS_EC), UT) \
- BOOST_ENUMS_NAMESPACES_CLOSE(BOOST_ENUMS_NAMESPACES_CLASS_NS(NS_EC)) \
- BOOST_ENUMS_OUT(NS_EC, UT)
-
-#define BOOST_ENUM_NS_CLASS_CONS_END(NS_EC, UT) \
- BOOST_ENUM_CLASS_CONS_END(BOOST_ENUMS_NAMESPACES_CLASS_ENUM(NS_EC), UT) \
- BOOST_ENUMS_NAMESPACES_CLOSE(BOOST_ENUMS_NAMESPACES_CLASS_NS(NS_EC)) \
- BOOST_ENUMS_OUT(NS_EC, UT)
-
-#define BOOST_ENUM_NS_TYPE_CONS_END(NS_EC, UT) \
- BOOST_ENUM_TYPE_CONS_END(BOOST_ENUMS_NAMESPACES_CLASS_ENUM(NS_EC), UT) \
- BOOST_ENUMS_NAMESPACES_CLOSE(BOOST_ENUMS_NAMESPACES_CLASS_NS(NS_EC)) \
- BOOST_ENUMS_OUT(NS_EC, UT)
+ BOOST_ENUM_TYPE_NO_CONS_END(BOOST_ENUMS_QNAME_NAME(QNAME), UT) \
+ BOOST_ENUMS_QNAME_CLOSE(QNAME) \
+ BOOST_ENUMS_OUT(QNAME, UT)
+
+#define BOOST_ENUM_NS_CLASS_CONS_END(QNAME, UT) \
+ BOOST_ENUM_CLASS_CONS_END(BOOST_ENUMS_QNAME_NAME(QNAME), UT) \
+ BOOST_ENUMS_QNAME_CLOSE(QNAME) \
+ BOOST_ENUMS_OUT(QNAME, UT)
+
+#define BOOST_ENUM_NS_TYPE_CONS_END(QNAME, UT) \
+ BOOST_ENUM_TYPE_CONS_END(BOOST_ENUMS_QNAME_NAME(QNAME), UT) \
+ BOOST_ENUMS_QNAME_CLOSE(QNAME) \
+ BOOST_ENUMS_OUT(QNAME, UT)
 
 #endif // BOOST_ENUMS_SCOPED_EMULATION_HPP


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk