|
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