annotate DEPENDENCIES/generic/include/boost/tti/detail/dtemplate.hpp @ 16:2665513ce2d3

Add boost headers
author Chris Cannam
date Tue, 05 Aug 2014 11:11:38 +0100
parents
children c530137014c0
rev   line source
Chris@16 1
Chris@16 2 // (C) Copyright Edward Diener 2011,2012,2013
Chris@16 3 // Use, modification and distribution are subject to the Boost Software License,
Chris@16 4 // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
Chris@16 5 // http://www.boost.org/LICENSE_1_0.txt).
Chris@16 6
Chris@16 7 #if !defined(BOOST_TTI_DETAIL_TEMPLATE_HPP)
Chris@16 8 #define BOOST_TTI_DETAIL_TEMPLATE_HPP
Chris@16 9
Chris@16 10 #include <boost/config.hpp>
Chris@16 11 #include <boost/mpl/has_xxx.hpp>
Chris@16 12 #include <boost/preprocessor/cat.hpp>
Chris@16 13 #include <boost/preprocessor/debug/assert.hpp>
Chris@16 14 #include <boost/preprocessor/facilities/is_empty.hpp>
Chris@16 15
Chris@16 16 #define BOOST_TTI_DETAIL_IS_HELPER_BOOST_PP_NIL
Chris@16 17
Chris@16 18 #define BOOST_TTI_DETAIL_IS_NIL(param) \
Chris@16 19 BOOST_PP_IS_EMPTY \
Chris@16 20 ( \
Chris@16 21 BOOST_PP_CAT(BOOST_TTI_DETAIL_IS_HELPER_,param) \
Chris@16 22 ) \
Chris@16 23 /**/
Chris@16 24
Chris@16 25 #define BOOST_TTI_DETAIL_TRAIT_ASSERT_NOT_NIL(trait,name,params) \
Chris@16 26 BOOST_PP_ASSERT_MSG(0, "The parameter must be BOOST_PP_NIL") \
Chris@16 27 /**/
Chris@16 28
Chris@16 29 #define BOOST_TTI_DETAIL_TRAIT_CHECK_IS_NIL(trait,name,params) \
Chris@16 30 BOOST_PP_IIF \
Chris@16 31 ( \
Chris@16 32 BOOST_TTI_DETAIL_IS_NIL(params), \
Chris@16 33 BOOST_TTI_DETAIL_TRAIT_HAS_TEMPLATE, \
Chris@16 34 BOOST_TTI_DETAIL_TRAIT_ASSERT_NOT_NIL \
Chris@16 35 ) \
Chris@16 36 (trait,name,params) \
Chris@16 37 /**/
Chris@16 38
Chris@16 39 #define BOOST_TTI_DETAIL_TRAIT_HAS_TEMPLATE(trait,name,params) \
Chris@16 40 BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF(BOOST_PP_CAT(trait,_detail_mpl), name, false) \
Chris@16 41 template<class BOOST_TTI_DETAIL_TP_T> \
Chris@16 42 struct trait : \
Chris@16 43 BOOST_PP_CAT(trait,_detail_mpl)<BOOST_TTI_DETAIL_TP_T> \
Chris@16 44 { \
Chris@16 45 }; \
Chris@16 46 /**/
Chris@16 47
Chris@16 48 #endif // !BOOST_TTI_DETAIL_TEMPLATE_HPP