1 2 // (C) Copyright Edward Diener 2011-2015 3 // Use, modification and distribution are subject to the Boost Software License, 4 // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at 5 // http://www.boost.org/LICENSE_1_0.txt). 6 7 #if !defined(BOOST_VMD_DETAIL_IS_TYPE_HPP) 8 #define BOOST_VMD_DETAIL_IS_TYPE_HPP 9 10 #include <boost/preprocessor/control/iif.hpp> 11 #include <boost/vmd/identity.hpp> 12 #include <boost/vmd/detail/identifier_type.hpp> 13 #include <boost/vmd/detail/is_type_type.hpp> 14 #include <boost/vmd/detail/is_identifier.hpp> 15 #include <boost/vmd/detail/type_registration.hpp> 16 17 #define BOOST_VMD_DETAIL_IS_TYPE_IMP_TYPE(vseq) \ 18 BOOST_VMD_DETAIL_IS_TYPE_TYPE \ 19 ( \ 20 BOOST_VMD_DETAIL_IDENTIFIER_TYPE(vseq) \ 21 ) \ 22 /**/ 23 24 #define BOOST_VMD_DETAIL_IS_TYPE_IMP_TYPE_D(d,vseq) \ 25 BOOST_VMD_DETAIL_IS_TYPE_TYPE \ 26 ( \ 27 BOOST_VMD_DETAIL_IDENTIFIER_TYPE_D(d,vseq) \ 28 ) \ 29 /**/ 30 31 #define BOOST_VMD_DETAIL_IS_TYPE(vseq) \ 32 BOOST_VMD_IDENTITY_RESULT \ 33 ( \ 34 BOOST_PP_IIF \ 35 ( \ 36 BOOST_VMD_DETAIL_IS_IDENTIFIER_SINGLE(vseq), \ 37 BOOST_VMD_DETAIL_IS_TYPE_IMP_TYPE, \ 38 BOOST_VMD_IDENTITY(0) \ 39 ) \ 40 (vseq) \ 41 ) \ 42 /**/ 43 44 #define BOOST_VMD_DETAIL_IS_TYPE_D(d,vseq) \ 45 BOOST_VMD_IDENTITY_RESULT \ 46 ( \ 47 BOOST_PP_IIF \ 48 ( \ 49 BOOST_VMD_DETAIL_IS_IDENTIFIER_SINGLE_D(d,vseq), \ 50 BOOST_VMD_DETAIL_IS_TYPE_IMP_TYPE_D, \ 51 BOOST_VMD_IDENTITY(0) \ 52 ) \ 53 (d,vseq) \ 54 ) \ 55 /**/ 56 57 #endif /* BOOST_VMD_DETAIL_IS_TYPE_HPP */ 58