Add SCons configure checks
[senf.git] / boost_ext / boost / bimap / detail / test / check_metadata.hpp
diff --git a/boost_ext/boost/bimap/detail/test/check_metadata.hpp b/boost_ext/boost/bimap/detail/test/check_metadata.hpp
new file mode 100644 (file)
index 0000000..b669ee0
--- /dev/null
@@ -0,0 +1,113 @@
+// Boost.Bimap
+//
+// Copyright (c) 2006-2007 Matias Capeletto
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef BOOST_BIMAP_DETAIL_CHECK_METADATA_HPP
+#define BOOST_BIMAP_DETAIL_CHECK_METADATA_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER>=1200)
+#pragma once
+#endif
+
+#include <boost/config.hpp>
+
+#include <boost/mpl/assert.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/preprocessor/cat.hpp>
+
+
+// Easier way to call BOOST_MPL_ASSERT_MSG in class scope
+/*===========================================================================*/
+#define BOOST_BIMAP_MPL_ASSERT_MSG_ACS(p1,p2,p3)                              \
+                                                                              \
+    struct p2 {};                                                             \
+    BOOST_MPL_ASSERT_MSG(p1,p2,p3);                                           \
+/*===========================================================================*/
+
+
+// Build a descriptive name.
+/*===========================================================================*/
+#define BOOST_BIMAP_WRONG_METADATA_MESSAGE(                                   \
+                                                                              \
+        P_CLASS,                                                              \
+        P_NAME,                                                               \
+        P_CORRECT_TYPE                                                        \
+                                                                              \
+    )                                                                         \
+                                                                              \
+    BOOST_PP_CAT                                                              \
+    (                                                                         \
+        WRONG_METADATA__,                                                     \
+        BOOST_PP_CAT                                                          \
+        (                                                                     \
+            P_CLASS,                                                          \
+            BOOST_PP_CAT                                                      \
+            (                                                                 \
+                __AT__,                                                       \
+                BOOST_PP_CAT                                                  \
+                (                                                             \
+                    P_NAME,                                                   \
+                    BOOST_PP_CAT                                              \
+                    (                                                         \
+                        __IS_DIFERENT_TO__,                                   \
+                        P_CORRECT_TYPE                                        \
+                    )                                                         \
+                )                                                             \
+            )                                                                 \
+        )                                                                     \
+    )
+/*===========================================================================*/
+
+
+// Check if the metadata have the correct type, and if not inform
+// it with a useful compile time message.
+/*===========================================================================*/
+#define BOOST_BIMAP_CHECK_METADATA(                                           \
+                                                                              \
+        P_CLASS,                                                              \
+        P_NAME,                                                               \
+        P_CORRECT_TYPE                                                        \
+                                                                              \
+    )                                                                         \
+                                                                              \
+    BOOST_BIMAP_MPL_ASSERT_MSG_ACS                                            \
+    (                                                                         \
+        (                                                                     \
+            ::boost::is_same                                                  \
+            <                                                                 \
+                P_CLASS::P_NAME,                                              \
+                P_CORRECT_TYPE                                                \
+                                                                              \
+            >::value                                                          \
+        ),                                                                    \
+        BOOST_BIMAP_WRONG_METADATA_MESSAGE                                    \
+        (                                                                     \
+            P_CLASS,                                                          \
+            P_NAME,                                                           \
+            P_CORRECT_TYPE                                                    \
+        ),                                                                    \
+        (P_CLASS::P_NAME,P_CORRECT_TYPE)                                      \
+    )
+/*===========================================================================*/
+
+
+// Just for autodocumment the test code
+/*===========================================================================*/
+#define BOOST_BIMAP_TEST_STATIC_FUNCTION(NAME)                                \
+    namespace NAME
+/*===========================================================================*/
+
+
+// Just for autodocument the test code
+/*===========================================================================*/
+#define BOOST_BIMAP_CALL_TEST_STATIC_FUNCTION(NAME)
+/*===========================================================================*/
+
+
+
+#endif // BOOST_BIMAP_DETAIL_CHECK_METADATA_HPP
+