Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:29:37

0001 // Boost.Bimap
0002 //
0003 // Copyright (c) 2006-2007 Matias Capeletto
0004 //
0005 // Distributed under the Boost Software License, Version 1.0.
0006 // (See accompanying file LICENSE_1_0.txt or copy at
0007 // http://www.boost.org/LICENSE_1_0.txt)
0008 
0009 #ifndef BOOST_BIMAP_DETAIL_CHECK_METADATA_HPP
0010 #define BOOST_BIMAP_DETAIL_CHECK_METADATA_HPP
0011 
0012 #if defined(_MSC_VER)
0013 #pragma once
0014 #endif
0015 
0016 #include <boost/config.hpp>
0017 
0018 #include <boost/mpl/assert.hpp>
0019 #include <boost/type_traits/is_same.hpp>
0020 #include <boost/preprocessor/cat.hpp>
0021 
0022 
0023 // Easier way to call BOOST_MPL_ASSERT_MSG in class scope
0024 /*===========================================================================*/
0025 #define BOOST_BIMAP_MPL_ASSERT_MSG_ACS(p1,p2,p3)                              \
0026                                                                               \
0027     struct p2 {};                                                             \
0028     BOOST_MPL_ASSERT_MSG(p1,p2,p3);                                           \
0029 /*===========================================================================*/
0030 
0031 
0032 // Build a descriptive name.
0033 /*===========================================================================*/
0034 #define BOOST_BIMAP_WRONG_METADATA_MESSAGE(                                   \
0035                                                                               \
0036         P_CLASS,                                                              \
0037         P_NAME,                                                               \
0038         P_CORRECT_TYPE                                                        \
0039                                                                               \
0040     )                                                                         \
0041                                                                               \
0042     BOOST_PP_CAT                                                              \
0043     (                                                                         \
0044         WRONG_METADATA__,                                                     \
0045         BOOST_PP_CAT                                                          \
0046         (                                                                     \
0047             P_CLASS,                                                          \
0048             BOOST_PP_CAT                                                      \
0049             (                                                                 \
0050                 __AT__,                                                       \
0051                 BOOST_PP_CAT                                                  \
0052                 (                                                             \
0053                     P_NAME,                                                   \
0054                     BOOST_PP_CAT                                              \
0055                     (                                                         \
0056                         __IS_DIFERENT_TO__,                                   \
0057                         P_CORRECT_TYPE                                        \
0058                     )                                                         \
0059                 )                                                             \
0060             )                                                                 \
0061         )                                                                     \
0062     )
0063 /*===========================================================================*/
0064 
0065 
0066 // Check if the metadata have the correct type, and if not inform
0067 // it with a useful compile time message.
0068 /*===========================================================================*/
0069 #define BOOST_BIMAP_CHECK_METADATA(                                           \
0070                                                                               \
0071         P_CLASS,                                                              \
0072         P_NAME,                                                               \
0073         P_CORRECT_TYPE                                                        \
0074                                                                               \
0075     )                                                                         \
0076                                                                               \
0077     BOOST_BIMAP_MPL_ASSERT_MSG_ACS                                            \
0078     (                                                                         \
0079         (                                                                     \
0080             ::boost::is_same                                                  \
0081             <                                                                 \
0082                 P_CLASS::P_NAME,                                              \
0083                 P_CORRECT_TYPE                                                \
0084                                                                               \
0085             >::value                                                          \
0086         ),                                                                    \
0087         BOOST_BIMAP_WRONG_METADATA_MESSAGE                                    \
0088         (                                                                     \
0089             P_CLASS,                                                          \
0090             P_NAME,                                                           \
0091             P_CORRECT_TYPE                                                    \
0092         ),                                                                    \
0093         (P_CLASS::P_NAME,P_CORRECT_TYPE)                                      \
0094     )
0095 /*===========================================================================*/
0096 
0097 
0098 // Just for autodocumment the test code
0099 /*===========================================================================*/
0100 #define BOOST_BIMAP_TEST_STATIC_FUNCTION(NAME)                                \
0101     namespace NAME
0102 /*===========================================================================*/
0103 
0104 
0105 // Just for autodocument the test code
0106 /*===========================================================================*/
0107 #define BOOST_BIMAP_CALL_TEST_STATIC_FUNCTION(NAME)
0108 /*===========================================================================*/
0109 
0110 
0111 
0112 #endif // BOOST_BIMAP_DETAIL_CHECK_METADATA_HPP
0113