annotate DEPENDENCIES/generic/include/boost/proto/detail/deprecated.hpp @ 133:4acb5d8d80b6 tip

Don't fail environmental check if README.md exists (but .txt and no-suffix don't)
author Chris Cannam
date Tue, 30 Jul 2019 12:25:44 +0100
parents 2665513ce2d3
children
rev   line source
Chris@16 1 ///////////////////////////////////////////////////////////////////////////////
Chris@16 2 /// \file deprecated.hpp
Chris@16 3 /// Definition of the deprecated BOOST_PROTO_DEFINE_FUCTION_TEMPLATE and
Chris@16 4 /// BOOST_PROTO_DEFINE_VARARG_FUCTION_TEMPLATE macros
Chris@16 5 //
Chris@16 6 // Copyright 2008 Eric Niebler. Distributed under the Boost
Chris@16 7 // Software License, Version 1.0. (See accompanying file
Chris@16 8 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Chris@16 9
Chris@16 10 #ifndef BOOST_PROTO_DETAIL_DEPRECATED_HPP_EAN_11_25_2008
Chris@16 11 #define BOOST_PROTO_DETAIL_DEPRECATED_HPP_EAN_11_25_2008
Chris@16 12
Chris@16 13 #include <boost/preprocessor/cat.hpp>
Chris@16 14 #include <boost/preprocessor/facilities/intercept.hpp>
Chris@16 15 #include <boost/preprocessor/arithmetic/inc.hpp>
Chris@16 16 #include <boost/preprocessor/arithmetic/dec.hpp>
Chris@16 17 #include <boost/preprocessor/arithmetic/sub.hpp>
Chris@16 18 #include <boost/preprocessor/punctuation/comma_if.hpp>
Chris@16 19 #include <boost/preprocessor/control/if.hpp>
Chris@16 20 #include <boost/preprocessor/control/expr_if.hpp>
Chris@16 21 #include <boost/preprocessor/comparison/greater.hpp>
Chris@16 22 #include <boost/preprocessor/tuple/elem.hpp>
Chris@16 23 #include <boost/preprocessor/tuple/to_list.hpp>
Chris@16 24 #include <boost/preprocessor/logical/and.hpp>
Chris@16 25 #include <boost/preprocessor/seq/size.hpp>
Chris@16 26 #include <boost/preprocessor/seq/enum.hpp>
Chris@16 27 #include <boost/preprocessor/seq/seq.hpp>
Chris@16 28 #include <boost/preprocessor/seq/to_tuple.hpp>
Chris@16 29 #include <boost/preprocessor/seq/for_each_i.hpp>
Chris@16 30 #include <boost/preprocessor/seq/pop_back.hpp>
Chris@16 31 #include <boost/preprocessor/seq/push_back.hpp>
Chris@16 32 #include <boost/preprocessor/seq/push_front.hpp>
Chris@16 33 #include <boost/preprocessor/list/for_each_i.hpp>
Chris@16 34 #include <boost/preprocessor/repetition/repeat.hpp>
Chris@16 35 #include <boost/preprocessor/repetition/repeat_from_to.hpp>
Chris@16 36 #include <boost/preprocessor/repetition/enum_binary_params.hpp>
Chris@16 37 #include <boost/preprocessor/repetition/enum_trailing_binary_params.hpp>
Chris@16 38 #include <boost/proto/proto_fwd.hpp>
Chris@16 39
Chris@16 40 /// INTERNAL ONLY
Chris@16 41 ///
Chris@16 42 #define BOOST_PROTO_VARARG_TEMPLATE_AUX_(R, DATA, I, ELEM) \
Chris@16 43 (ELEM BOOST_PP_CAT(BOOST_PP_CAT(X, DATA), BOOST_PP_CAT(_, I))) \
Chris@16 44 /**/
Chris@16 45
Chris@16 46 /// INTERNAL ONLY
Chris@16 47 ///
Chris@16 48 #define BOOST_PROTO_VARARG_TEMPLATE_YES_(R, DATA, I, ELEM) \
Chris@16 49 BOOST_PP_LIST_FOR_EACH_I_R( \
Chris@16 50 R \
Chris@16 51 , BOOST_PROTO_VARARG_TEMPLATE_AUX_ \
Chris@16 52 , I \
Chris@16 53 , BOOST_PP_TUPLE_TO_LIST( \
Chris@16 54 BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(ELEM)) \
Chris@16 55 , BOOST_PP_SEQ_TO_TUPLE(BOOST_PP_SEQ_TAIL(ELEM)) \
Chris@16 56 ) \
Chris@16 57 ) \
Chris@16 58 /**/
Chris@16 59
Chris@16 60 /// INTERNAL ONLY
Chris@16 61 ///
Chris@16 62 #define BOOST_PROTO_VARARG_TEMPLATE_NO_(R, DATA, I, ELEM) \
Chris@16 63 /**/
Chris@16 64
Chris@16 65 /// INTERNAL ONLY
Chris@16 66 ///
Chris@16 67 #define BOOST_PROTO_VARARG_TEMPLATE_(R, DATA, I, ELEM) \
Chris@16 68 BOOST_PP_IF( \
Chris@16 69 BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(ELEM)) \
Chris@16 70 , BOOST_PROTO_VARARG_TEMPLATE_YES_ \
Chris@16 71 , BOOST_PROTO_VARARG_TEMPLATE_NO_ \
Chris@16 72 )(R, DATA, I, ELEM) \
Chris@16 73 /**/
Chris@16 74
Chris@16 75 /// INTERNAL ONLY
Chris@16 76 ///
Chris@16 77 #define BOOST_PROTO_VARARG_TYPE_AUX_(R, DATA, I, ELEM) \
Chris@16 78 (BOOST_PP_CAT(BOOST_PP_CAT(X, DATA), BOOST_PP_CAT(_, I))) \
Chris@16 79 /**/
Chris@16 80
Chris@16 81 /// INTERNAL ONLY
Chris@16 82 ///
Chris@16 83 #define BOOST_PROTO_TEMPLATE_PARAMS_YES_(R, DATA, I, ELEM) \
Chris@16 84 < \
Chris@16 85 BOOST_PP_SEQ_ENUM( \
Chris@16 86 BOOST_PP_LIST_FOR_EACH_I_R( \
Chris@16 87 R \
Chris@16 88 , BOOST_PROTO_VARARG_TYPE_AUX_ \
Chris@16 89 , I \
Chris@16 90 , BOOST_PP_TUPLE_TO_LIST( \
Chris@16 91 BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(ELEM)) \
Chris@16 92 , BOOST_PP_SEQ_TO_TUPLE(BOOST_PP_SEQ_TAIL(ELEM)) \
Chris@16 93 ) \
Chris@16 94 ) \
Chris@16 95 ) \
Chris@16 96 > \
Chris@16 97 /**/
Chris@16 98
Chris@16 99 /// INTERNAL ONLY
Chris@16 100 ///
Chris@16 101 #define BOOST_PROTO_TEMPLATE_PARAMS_NO_(R, DATA, I, ELEM) \
Chris@16 102 /**/
Chris@16 103
Chris@16 104 /// INTERNAL ONLY
Chris@16 105 ///
Chris@16 106 #define BOOST_PROTO_VARARG_TYPE_(R, DATA, I, ELEM) \
Chris@16 107 BOOST_PP_COMMA_IF(I) \
Chris@16 108 BOOST_PP_SEQ_HEAD(ELEM) \
Chris@16 109 BOOST_PP_IF( \
Chris@16 110 BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(ELEM)) \
Chris@16 111 , BOOST_PROTO_TEMPLATE_PARAMS_YES_ \
Chris@16 112 , BOOST_PROTO_TEMPLATE_PARAMS_NO_ \
Chris@16 113 )(R, DATA, I, ELEM) BOOST_PP_EXPR_IF(BOOST_PP_GREATER(I, 1), const) \
Chris@16 114 /**/
Chris@16 115
Chris@16 116 /// INTERNAL ONLY
Chris@16 117 ///
Chris@16 118 #define BOOST_PROTO_VARARG_AS_EXPR_(R, DATA, I, ELEM) \
Chris@16 119 BOOST_PP_EXPR_IF( \
Chris@16 120 BOOST_PP_GREATER(I, 1) \
Chris@16 121 , (( \
Chris@16 122 BOOST_PP_SEQ_HEAD(ELEM) \
Chris@16 123 BOOST_PP_IF( \
Chris@16 124 BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(ELEM)) \
Chris@16 125 , BOOST_PROTO_TEMPLATE_PARAMS_YES_ \
Chris@16 126 , BOOST_PROTO_TEMPLATE_PARAMS_NO_ \
Chris@16 127 )(R, DATA, I, ELEM)() \
Chris@16 128 )) \
Chris@16 129 ) \
Chris@16 130 /**/
Chris@16 131
Chris@16 132 /// INTERNAL ONLY
Chris@16 133 ///
Chris@16 134 #define BOOST_PROTO_VARARG_AS_CHILD_(Z, N, DATA) \
Chris@16 135 (BOOST_PP_CAT(DATA, N)) \
Chris@16 136 /**/
Chris@16 137
Chris@16 138 /// INTERNAL ONLY
Chris@16 139 ///
Chris@16 140 #define BOOST_PROTO_SEQ_PUSH_FRONT(SEQ, ELEM) \
Chris@16 141 BOOST_PP_SEQ_POP_BACK(BOOST_PP_SEQ_PUSH_FRONT(BOOST_PP_SEQ_PUSH_BACK(SEQ, _dummy_), ELEM)) \
Chris@16 142 /**/
Chris@16 143
Chris@16 144 /// INTERNAL ONLY
Chris@16 145 ///
Chris@16 146 #define BOOST_PROTO_VARARG_AS_PARAM_(Z, N, DATA) \
Chris@16 147 (BOOST_PP_CAT(DATA, N)) \
Chris@16 148 /**/
Chris@16 149
Chris@16 150 /// INTERNAL ONLY
Chris@16 151 ///
Chris@16 152 #define BOOST_PROTO_VARARG_FUN_(Z, N, DATA) \
Chris@16 153 template< \
Chris@16 154 BOOST_PP_SEQ_ENUM( \
Chris@16 155 BOOST_PP_SEQ_FOR_EACH_I( \
Chris@16 156 BOOST_PROTO_VARARG_TEMPLATE_, ~ \
Chris@16 157 , BOOST_PP_SEQ_PUSH_FRONT( \
Chris@16 158 BOOST_PROTO_SEQ_PUSH_FRONT( \
Chris@16 159 BOOST_PP_TUPLE_ELEM(4, 2, DATA) \
Chris@16 160 , (BOOST_PP_TUPLE_ELEM(4, 3, DATA)) \
Chris@16 161 ) \
Chris@16 162 , BOOST_PP_TUPLE_ELEM(4, 1, DATA) \
Chris@16 163 ) \
Chris@16 164 ) \
Chris@16 165 BOOST_PP_REPEAT_ ## Z(N, BOOST_PROTO_VARARG_AS_PARAM_, typename A) \
Chris@16 166 ) \
Chris@16 167 > \
Chris@16 168 typename boost::proto::result_of::make_expr< \
Chris@16 169 BOOST_PP_SEQ_FOR_EACH_I( \
Chris@16 170 BOOST_PROTO_VARARG_TYPE_, ~ \
Chris@16 171 , BOOST_PP_SEQ_PUSH_FRONT( \
Chris@16 172 BOOST_PROTO_SEQ_PUSH_FRONT( \
Chris@16 173 BOOST_PP_TUPLE_ELEM(4, 2, DATA) \
Chris@16 174 , (BOOST_PP_TUPLE_ELEM(4, 3, DATA)) \
Chris@16 175 ) \
Chris@16 176 , BOOST_PP_TUPLE_ELEM(4, 1, DATA) \
Chris@16 177 ) \
Chris@16 178 ) \
Chris@16 179 BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_Z(Z, N, A, const & BOOST_PP_INTERCEPT) \
Chris@16 180 >::type const \
Chris@16 181 BOOST_PP_TUPLE_ELEM(4, 0, DATA)(BOOST_PP_ENUM_BINARY_PARAMS_Z(Z, N, A, const &a)) \
Chris@16 182 { \
Chris@16 183 return boost::proto::detail::make_expr_< \
Chris@16 184 BOOST_PP_SEQ_FOR_EACH_I( \
Chris@16 185 BOOST_PROTO_VARARG_TYPE_, ~ \
Chris@16 186 , BOOST_PP_SEQ_PUSH_FRONT( \
Chris@16 187 BOOST_PROTO_SEQ_PUSH_FRONT( \
Chris@16 188 BOOST_PP_TUPLE_ELEM(4, 2, DATA) \
Chris@16 189 , (BOOST_PP_TUPLE_ELEM(4, 3, DATA)) \
Chris@16 190 ) \
Chris@16 191 , BOOST_PP_TUPLE_ELEM(4, 1, DATA) \
Chris@16 192 ) \
Chris@16 193 ) \
Chris@16 194 BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_Z(Z, N, A, const & BOOST_PP_INTERCEPT) \
Chris@16 195 >()( \
Chris@16 196 BOOST_PP_SEQ_ENUM( \
Chris@16 197 BOOST_PP_SEQ_FOR_EACH_I( \
Chris@16 198 BOOST_PROTO_VARARG_AS_EXPR_, ~ \
Chris@16 199 , BOOST_PP_SEQ_PUSH_FRONT( \
Chris@16 200 BOOST_PROTO_SEQ_PUSH_FRONT( \
Chris@16 201 BOOST_PP_TUPLE_ELEM(4, 2, DATA) \
Chris@16 202 , (BOOST_PP_TUPLE_ELEM(4, 3, DATA)) \
Chris@16 203 ) \
Chris@16 204 , BOOST_PP_TUPLE_ELEM(4, 1, DATA) \
Chris@16 205 ) \
Chris@16 206 ) \
Chris@16 207 BOOST_PP_REPEAT_ ## Z(N, BOOST_PROTO_VARARG_AS_CHILD_, a) \
Chris@16 208 ) \
Chris@16 209 ); \
Chris@16 210 } \
Chris@16 211 /**/
Chris@16 212
Chris@16 213 /// \code
Chris@16 214 /// BOOST_PROTO_DEFINE_FUNCTION_TEMPLATE(
Chris@16 215 /// 1
Chris@16 216 /// , construct
Chris@16 217 /// , boost::proto::default_domain
Chris@16 218 /// , (boost::proto::tag::function)
Chris@16 219 /// , ((op::construct)(typename)(int))
Chris@16 220 /// )
Chris@16 221 /// \endcode
Chris@16 222 #define BOOST_PROTO_DEFINE_FUNCTION_TEMPLATE(ARGCOUNT, NAME, DOMAIN, TAG, BOUNDARGS) \
Chris@16 223 BOOST_PP_REPEAT_FROM_TO( \
Chris@16 224 ARGCOUNT \
Chris@16 225 , BOOST_PP_INC(ARGCOUNT) \
Chris@16 226 , BOOST_PROTO_VARARG_FUN_ \
Chris@16 227 , (NAME, TAG, BOUNDARGS, DOMAIN) \
Chris@16 228 )\
Chris@16 229 /**/
Chris@16 230
Chris@16 231 /// \code
Chris@16 232 /// BOOST_PROTO_DEFINE_VARARG_FUNCTION_TEMPLATE(
Chris@16 233 /// construct
Chris@16 234 /// , boost::proto::default_domain
Chris@16 235 /// , (boost::proto::tag::function)
Chris@16 236 /// , ((op::construct)(typename)(int))
Chris@16 237 /// )
Chris@16 238 /// \endcode
Chris@16 239 #define BOOST_PROTO_DEFINE_VARARG_FUNCTION_TEMPLATE(NAME, DOMAIN, TAG, BOUNDARGS) \
Chris@16 240 BOOST_PP_REPEAT( \
Chris@16 241 BOOST_PP_SUB(BOOST_PP_INC(BOOST_PROTO_MAX_ARITY), BOOST_PP_SEQ_SIZE(BOUNDARGS)) \
Chris@16 242 , BOOST_PROTO_VARARG_FUN_ \
Chris@16 243 , (NAME, TAG, BOUNDARGS, DOMAIN) \
Chris@16 244 ) \
Chris@16 245 /**/
Chris@16 246
Chris@16 247 #endif