diff --git a/include/boost/contract/aux_/decl/class.hpp b/include/boost/contract/aux_/decl/class.hpp deleted file mode 100644 index 16a36da..0000000 --- a/include/boost/contract/aux_/decl/class.hpp +++ /dev/null @@ -1,123 +0,0 @@ - -#ifndef BOOST_CONTRACT_AUX_CLASS_HPP_ -#define BOOST_CONTRACT_AUX_CLASS_HPP_ - -#include <boost/contract/aux_/code/params.hpp> -#include <boost/contract/aux_/eval.hpp> -#include <boost/contract/aux_/name.hpp> -#include <boost/contract/ext_/preprocessor/traits/class.hpp> // c -#include <boost/contract/ext_/preprocessor/traits/base.hpp> // b -#include <boost/contract/ext_/preprocessor/variadic/wrap_iif.hpp> -#include <boost/contract/ext_/preprocessor/utility/empty.hpp> -#include <boost/contract/ext_/preprocessor/parenthesize.hpp> -#include <boost/preprocessor/seq/for_each_i.hpp> -#include <boost/preprocessor/tuple/eat.hpp> -#include <boost/preprocessor/tuple/rem.hpp> -#include <boost/preprocessor/control/iif.hpp> -#include <boost/preprocessor/punctuation/comma.hpp> - -/* PUBLIC */ - -// Type of class being declared. -#define BOOST_CONTRACT_AUX_CLASS_TYPE \ - BOOST_CONTRACT_AUX_NAME1(class_type) - -// Type of extra evaluation base. -#define BOOST_CONTRACT_AUX_CLASS_EVAL_BASE_TYPE \ - BOOST_CONTRACT_AUX_NAME1(eval_base_type) - -// Type of i-th base class, i in [0, number of base classes for this class). -#define BOOST_CONTRACT_AUX_CLASS_BASE_TYPE(i) \ - BOOST_CONTRACT_AUX_NAME2(base_type, i) - -#define BOOST_CONTRACT_AUX_CLASS_D_R(d, r, id, tpl, c) \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_EXPORT(c) \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE(c) \ - BOOST_CONTRACT_EXT_PP_VARIADIC_WRAP_IIF( \ - BOOST_PP_COMPL(BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE(c))) \ - , \ - <, >, \ - BOOST_CONTRACT_AUX_PARAMS_WITH_DEFAULTS_D_R(d, r, id, tpl, \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE_PARAMS(c), \ - BOOST_PP_EMPTY() \ - ) \ - ) \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_FRIEND(c) \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_KEY(c) \ - BOOST_CONTRACT_EXT_PP_UNPARENTHESIZE( \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_VERBATIM(c)) \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_NAME(c) \ - BOOST_CONTRACT_EXT_PP_VARIADIC_WRAP_IIF( \ - BOOST_PP_COMPL(BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_SPECIALIZATION(c))) \ - , \ - <, >, \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_SPECIALIZATION(c) \ - ) \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_FINAL(c) \ - BOOST_PP_IIF(BOOST_CONTRACT_AUX_CLASS_HAS_EVAL_BASE_(c), \ - : private BOOST_CONTRACT_AUX_CLASS_EVAL_BASE_ \ - , \ - BOOST_PP_TUPLE_EAT(1) \ - )(c) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_BASES(c)), \ - BOOST_PP_TUPLE_EAT(4) \ - , \ - BOOST_PP_SEQ_FOR_EACH_I_R \ - )(r, \ - BOOST_CONTRACT_AUX_CLASS_BASE_, \ - BOOST_CONTRACT_AUX_CLASS_HAS_EVAL_BASE_(c), \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_BASES(c) \ - ) \ - BOOST_PP_IIF(BOOST_CONTRACT_AUX_CLASS_HAS_TYPEDEFS_(c), \ - BOOST_CONTRACT_AUX_CLASS_TYPEDEFS_ \ - , \ - BOOST_PP_TUPLE_EAT(5) \ - )(d, r, id, tpl, c) - -/* PRIVATE */ - -// TODO: Expand 0 if contracts disabled... -#define BOOST_CONTRACT_AUX_CLASS_HAS_EVAL_BASE_(c) 1 - -// TODO: Expand 0 if contracts disabled... -#define BOOST_CONTRACT_AUX_CLASS_HAS_TYPEDEFS_(c) 1 - -#define BOOST_CONTRACT_AUX_CLASS_EVAL_BASE_(c) \ - boost::contract::aux::eval<BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_NAME(c)> - -#define BOOST_CONTRACT_AUX_CLASS_BASE_(r, has_extra_bases, i, b) \ - BOOST_PP_IIF(has_extra_bases, \ - BOOST_PP_COMMA \ - , BOOST_PP_IF(i, \ - BOOST_PP_COMMA \ - , \ - : BOOST_PP_EMPTY \ - ))() \ - BOOST_CONTRACT_EXT_PP_BASE_TRAITS_ACCESS(b) \ - BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL(b) \ - BOOST_PP_TUPLE_REM_CTOR(BOOST_CONTRACT_EXT_PP_BASE_TRAITS_TYPE(b)) - -#define BOOST_CONTRACT_AUX_CLASS_BASE_TYPEDEF_(r, unused, i, b) \ - typedef BOOST_PP_TUPLE_REM_CTOR(BOOST_CONTRACT_EXT_PP_BASE_TRAITS_TYPE(b)) \ - BOOST_CONTRACT_AUX_CLASS_BASE_TYPE(i); - -#define BOOST_CONTRACT_AUX_CLASS_TYPEDEFS_(d, r, id, tpl, c) \ - { \ - typedef BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_NAME(c) \ - BOOST_CONTRACT_AUX_CLASS_TYPE; \ - typedef BOOST_CONTRACT_AUX_CLASS_EVAL_BASE_(c) \ - BOOST_CONTRACT_AUX_CLASS_EVAL_BASE_TYPE; \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_BASES(c)), \ - BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_FOR_EACH_I_R \ - )(r, BOOST_CONTRACT_AUX_CLASS_BASE_TYPEDEF_, ~, \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_BASES(c)) \ - class BOOST_CONTRACT_AUX_NAME1(ERROR_missing_class_invariant) - -#endif // #include guard - diff --git a/include/boost/contract/aux_/decl/func.hpp b/include/boost/contract/aux_/decl/func.hpp deleted file mode 100644 index 3f2d094..0000000 --- a/include/boost/contract/aux_/decl/func.hpp +++ /dev/null @@ -1,144 +0,0 @@ - -#ifndef BOOST_CONTRACT_AUX_FUNC_HPP_ -#define BOOST_CONTRACT_AUX_FUNC_HPP_ - -#include <boost/contract/aux_/code/class.hpp> -#include <boost/contract/ext_/preprocessor/traits/func.hpp> // f -#include <boost/contract/ext_/preprocessor/parenthesize.hpp> - -/* PUBLIC */ - -#define BOOST_CONTRACT_AUX_FUNC_D_R(d, r, id, tpl, f) \ - BOOST_CONTRACT_AUX_NAMED_FUNC_DECL_D_R(d, r, id, tpl, f, \ - (BOOST_CONTRACT_AUX_FUNC_NAME_(f))) { \ - boost::contract::function \ - BOOST_CONTRACT_EXT_PP_VARIADIC_WRAP_IIF( \ - BOOST_PP_COMPL(BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE(f)) \ - ), \ - <, >, \ - BOOST_CONTRACT_AUX_PARAMS_NAMES_D_R(d, r, id, tpl, \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE_PARAMS(f), \ - BOOST_PP_EMPTY() \ - ) \ - ) \ - ( \ - &BOOST_CONTRACT_AUX_CLASS_TYPE:: \ - BOOST_CONTRACT_AUX_FUNC_BODY_NAME_(f) \ - BOOST_PP_COMMA_IF(BOOST_PP_COMPL(BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS(f)))) \ - BOOST_CONTRACT_AUX_PARAMS_NAMES_D_R(d, r, id, tpl, \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS(f), \ - BOOST_PP_EMPTY() \ - ) \ - ); \ - } \ - BOOST_CONTRACT_AUX_NAMED_FUNC_DECL_D_R(d, r, id, tpl, f, \ - (BOOST_CONTRACT_AUX_FUNC_BODY_NAME_(f))) \ - -#define BOOST_CONTRACT_AUX_NAMED_FUNC_DECL_D_R(d, r, id, tpl, f, \ - parenthesized_name) \ - BOOST_CONTRACT_AUX_FUNC_DECL_(d, r, id, tpl, f, \ - parenthesized_name, \ - BOOST_CONTRACT_AUX_PARAMS_WITH_DEFAULTS_D_R, BOOST_PP_EMPTY(), \ - (1, 1) \ - ) - -/* PRIVATE */ - -#define BOOST_CONTRACT_AUX_FUNC_NAME_(f) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_OPERATOR_NAME(f)), \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME \ - , \ - operator BOOST_PP_TUPLE_REM(0) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_OPERATOR_NAME \ - )(f) - -#define BOOST_CONTRACT_AUX_FUNC_BODY_NAME_(f) \ - BOOST_CONTRACT_FUNCTION_BODY( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_OPERATOR_NAME(f)), \ - BOOST_PP_TUPLE_REM(1) \ - , \ - operator BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_OPERATOR_NAME(f) \ - )(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME(f)) \ - ) - -#define BOOST_CONTRACT_AUX_FUNC_DECL_(d, r, id, tpl, f, parenthesized_name, \ - params_macro, extra_params, classifiers_virt) \ - BOOST_CONTRACT_AUX_FUNC_DECL_ARGS_(d, r, id, tpl, f, \ - parenthesized_name, \ - params_macro, extra_params, \ - BOOST_PP_TUPLE_ELEM(2, 0, classifiers_virt), \ - BOOST_PP_TUPLE_ELEM(2, 1, classifiers_virt) \ - ) - -// Name is passed within parenthesis in case it is an operator with commas, -// for example: `operator std::map<U,V>`, `operator,`. -#define BOOST_CONTRACT_AUX_FUNC_DECL_ARGS_(d, r, id, tpl, f, \ - parenthesized_name, \ - params_macro, extra_params, \ - has_classifiers, has_virtual_specifiers \ -) \ - BOOST_CONTRACT_EXT_PP_UNPARENTHESIZE( \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VERBATIM(f)) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXPORT(f) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE(f) \ - BOOST_CONTRACT_EXT_PP_VARIADIC_WRAP_IIF( \ - BOOST_PP_COMPL(BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE(f)) \ - ), \ - <, >, \ - BOOST_CONTRACT_AUX_PARAMS_WITH_DEFAULTS_D_R(d, r, id, tpl, \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE_PARAMS(f), \ - BOOST_PP_EMPTY() \ - ) \ - ) \ - BOOST_PP_IIF(has_classifiers, \ - BOOST_CONTRACT_AUX_CLASSIFIERS_ \ - , \ - BOOST_PP_TUPLE_EAT(1) \ - )(f) \ - BOOST_CONTRACT_EXT_PP_UNPARENTHESIZE( \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN(f)) \ - BOOST_CONTRACT_EXT_PP_UNPARENTHESIZE(parenthesized_name) \ - (params_macro(d, r, id, tpl, BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS(f), \ - extra_params)) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CONST(f) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VOLATILE(f) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_IS_REF_REF( \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF(f)), \ - && \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_REF_FRONT( \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF(f)), \ - & \ - , \ - BOOST_PP_EMPTY() \ - )) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT(f) \ - BOOST_PP_EXPR_IIF(BOOST_PP_COMPL(BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TRAILING_RETURN(f))), \ - -> BOOST_CONTRACT_EXT_PP_UNPARENTHESIZE \ - ) BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TRAILING_RETURN(f) \ - BOOST_PP_IIF(has_virtual_specifiers, \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_FINAL \ - , \ - BOOST_PP_TUPLE_EAT(1) \ - )(f) \ - BOOST_PP_IIF(has_virtual_specifiers, \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_OVERRIDE \ - , \ - BOOST_PP_TUPLE_EAT(1) \ - )(f) - -#define BOOST_CONTRACT_AUX_CLASSIFIERS_(f) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_INLINE(f) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_STATIC(f) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXTERN(f) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXPLICIT(f) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VIRTUAL(f) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_FRIEND(f) - -#endif // #include guard - diff --git a/include/boost/contract/aux_/decl/invoke_or_error.hpp b/include/boost/contract/aux_/decl/invoke_or_error.hpp deleted file mode 100644 index 34f1da9..0000000 --- a/include/boost/contract/aux_/decl/invoke_or_error.hpp +++ /dev/null @@ -1,44 +0,0 @@ - -#ifndef BOOST_CONTRACT_AUX_CODE_INVOKE_OR_ERROR_HPP_ -#define BOOST_CONTRACT_AUX_CODE_INVOKE_OR_ERROR_HPP_ - -#include <boost/contract/ext_/preprocessor/utility/nil.hpp> -#include <boost/static_assert.hpp> -#include <boost/preprocessor/tuple/elem.hpp> -#include <boost/preprocessor/control/iif.hpp> -#include <boost/preprocessor/stringize.hpp> - -/* PUBLIC */ - -// Expand to `op_macro(d, id, traits)` if parsed decl is NIL (i.e., no trait -// parsing error), otherwise expand to a static assertion error messaging the -// decl that remained unparsed. -#define BOOST_CONTRACT_AUX_INVOKE_OR_ERROR(d, r, id, tpl, orig_decl, \ - parsed_decltraits, macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM(2, 0, \ - parsed_decltraits)), \ - BOOST_CONTRACT_AUX_INVOKE_OR_ERROR_NO_ \ - , \ - BOOST_CONTRACT_AUX_INVOKE_OR_ERROR_YES_ \ - )(d, r, id, tpl, orig_decl, parsed_decltraits, macro) - -/* PRIVATE */ - -#define BOOST_CONTRACT_AUX_INVOKE_OR_ERROR_NO_(d, r, id, tpl, orig_decl, \ - parsed_decltraits, macro) \ - macro(d, r, id, tpl, BOOST_PP_TUPLE_ELEM(2, 1, parsed_decltraits)) - -// Static assertion must be used because there is portable way to report an -// error with a description message using a preprocessor macro expansion -// (because macros cannot expand and therefore use #error). -#define BOOST_CONTRACT_AUX_INVOKE_OR_ERROR_YES_(d, r, id, tpl, orig_decl, \ - parsed_decltraits, macro) \ - BOOST_STATIC_ASSERT_MSG( \ - false, \ - "unable to complete parsing of declaration '" \ - BOOST_PP_STRINGIZE(orig_decl) "', parsed only up until '" \ - BOOST_PP_STRINGIZE(BOOST_PP_TUPLE_ELEM(2, 0, parsed_decltraits)) "'" \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/aux_/decl/params.hpp b/include/boost/contract/aux_/decl/params.hpp deleted file mode 100644 index 5e2ec22..0000000 --- a/include/boost/contract/aux_/decl/params.hpp +++ /dev/null @@ -1,108 +0,0 @@ - -#ifndef BOOST_CONTRACT_AUX_PARAMS_HPP_ -#define BOOST_CONTRACT_AUX_PARAMS_HPP_ - -#include <boost/contract/aux_/name.hpp> -#include <boost/contract/ext_/preprocessor/traits/param.hpp> // p -#include <boost/contract/ext_/preprocessor/keyword/template.hpp> -#include <boost/contract/ext_/preprocessor/utility/empty.hpp> -#include <boost/preprocessor/seq/for_each_i.hpp> -#include <boost/preprocessor/tuple/rem.hpp> -#include <boost/preprocessor/tuple/eat.hpp> -#include <boost/preprocessor/tuple/elem.hpp> -#include <boost/preprocessor/control/expr_iif.hpp> -#include <boost/preprocessor/control/iif.hpp> -#include <boost/preprocessor/punctuation/comma_if.hpp> - -/* PUBLIC */ - -#define BOOST_CONTRACT_AUX_PP_PARAM_INDEXED_NAME(i) \ - BOOST_CONTRACT_AUX_NAME2(arg, i) - -// Types, names, and default arguments (for usual declarations, etc.). -// If not EMPTY(), extra_params decl pp-tuple is appended at param list's end. -#define BOOST_CONTRACT_AUX_PARAMS_WITH_DEFAULTS_D_R(d, r, id, tpl, \ - params_traits, extra_params) \ - BOOST_CONTRACT_AUX_PARAMS_(d, r, id, tpl, params_traits, extra_params, \ - (1, 1, 0, 1)) - -// Names only (for invocations, etc.). -#define BOOST_CONTRACT_AUX_PARAMS_NAMES_D_R(d, r, id, tpl, \ - params_traits, extra_params) \ - BOOST_CONTRACT_AUX_PARAMS_(d, r, id, tpl, params_traits, extra_params, \ - (0, 1, 0, 0)) - -/* PRIVATE */ - -#define BOOST_CONTRACT_AUX_PARAMS_(d, r, id, tpl, params_traits, extras, \ - type_named_indexed_default) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(params_traits), \ - BOOST_PP_TUPLE_EAT(3) \ - , \ - BOOST_PP_SEQ_FOR_EACH_I_R \ - )(r, BOOST_CONTRACT_AUX_PARAM_, type_named_indexed_default, params_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(extras), \ - BOOST_PP_TUPLE_EAT(1) \ - , \ - BOOST_CONTRACT_AUX_PARAMS_EXTRAS_ \ - )(extras) - -#define BOOST_CONTRACT_AUX_PARAMS_EXTRAS_(extras) \ - , BOOST_PP_TUPLE_REM_CTOR(extras) - -#define BOOST_CONTRACT_AUX_PARAM_(r, type_named_indexed_default, i, p) \ - BOOST_CONTRACT_AUX_PARAM_ARGS_(r, i, p, \ - BOOST_PP_TUPLE_ELEM(4, 0, type_named_indexed_default), \ - BOOST_PP_TUPLE_ELEM(4, 1, type_named_indexed_default), \ - BOOST_PP_TUPLE_ELEM(4, 2, type_named_indexed_default), \ - BOOST_PP_TUPLE_ELEM(4, 3, type_named_indexed_default) \ - ) - -#define BOOST_CONTRACT_AUX_PARAM_ARGS_(r, i, p, \ - has_type, has_name, has_index, has_default) \ - BOOST_PP_COMMA_IF(i) \ - BOOST_PP_IIF(has_type, \ - BOOST_CONTRACT_AUX_PARAM_TYPE_ \ - , \ - BOOST_PP_TUPLE_EAT(1) \ - )(p) \ - BOOST_PP_IIF(has_name, \ - BOOST_CONTRACT_AUX_PARAM_NAME_ \ - , BOOST_PP_IIF(has_index, \ - BOOST_CONTRACT_AUX_PARAM_INDEXED_NAME_ \ - , \ - BOOST_PP_TUPLE_EAT(1) \ - ))(p, i) \ - BOOST_PP_IIF(has_default, \ - BOOST_CONTRACT_AUX_PARAM_DEFAULT_ \ - , \ - BOOST_PP_TUPLE_EAT(1) \ - )(p) - -#define BOOST_CONTRACT_AUX_PARAM_TYPE_(p) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TEMPLATE_FRONT( \ - BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE(p)), \ - BOOST_CONTRACT_AUX_TEMPLATE_PARAM_TEMPLATE_ \ - , \ - BOOST_CONTRACT_EXT_PP_UNPARENTHESIZE \ - )(BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE(p)) - -#define BOOST_CONTRACT_AUX_TEMPLATE_PARAM_TEMPLATE_(type) \ - template< BOOST_PP_TUPLE_REM_CTOR( \ - BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_TEMPLATE_PARAMS(type) \ - ) > BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_TEMPLATE_KEY(type) - -#define BOOST_CONTRACT_AUX_PARAM_NAME_(p, i) \ - BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_NAME(p) - -#define BOOST_CONTRACT_AUX_PARAM_INDEXED_NAME_(p, i) \ - BOOST_CONTRACT_AUX_PP_PARAM_INDEXED_NAME(i) - -#define BOOST_CONTRACT_AUX_PARAM_DEFAULT_(p) \ - BOOST_PP_EXPR_IIF(BOOST_PP_COMPL(BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_DEFAULT(p))), \ - = BOOST_PP_TUPLE_REM(0) \ - ) BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_DEFAULT(p) - -#endif // #include guard - diff --git a/include/boost/contract/aux_/eval.hpp b/include/boost/contract/aux_/eval.hpp deleted file mode 100644 index d38d2c4..0000000 --- a/include/boost/contract/aux_/eval.hpp +++ /dev/null @@ -1,24 +0,0 @@ - -#ifndef BOOST_CONTRACT_AUX_EVAL_HPP_ -#define BOOST_CONTRACT_AUX_EVAL_HPP_ - -namespace boost { namespace contract { namespace aux { - -// Used to force evaluation of expressions before a class is constructed: -// -// struct x : private eval<x>, ... { -// x ( ) : eval<x>((expr1, expr2, expr3, ...)), ... { ... } -// ... -// }; -template< class Derived > -struct eval { - eval ( ) {} - - template< typename Expr > - explicit eval ( Expr const& ) {} -}; - -} } } // namespace - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/private.hpp b/include/boost/contract/aux_/preprocessor/keyword/private.hpp similarity index 100% rename from include/boost/contract/ext_/preprocessor/keyword/private.hpp rename to include/boost/contract/aux_/preprocessor/keyword/private.hpp diff --git a/include/boost/contract/ext_/preprocessor/keyword/protected.hpp b/include/boost/contract/aux_/preprocessor/keyword/protected.hpp similarity index 100% rename from include/boost/contract/ext_/preprocessor/keyword/protected.hpp rename to include/boost/contract/aux_/preprocessor/keyword/protected.hpp diff --git a/include/boost/contract/ext_/preprocessor/keyword/public.hpp b/include/boost/contract/aux_/preprocessor/keyword/public.hpp similarity index 100% rename from include/boost/contract/ext_/preprocessor/keyword/public.hpp rename to include/boost/contract/aux_/preprocessor/keyword/public.hpp diff --git a/include/boost/contract/ext_/preprocessor/keyword/utility/is.hpp b/include/boost/contract/aux_/preprocessor/keyword/utility/is.hpp similarity index 100% rename from include/boost/contract/ext_/preprocessor/keyword/utility/is.hpp rename to include/boost/contract/aux_/preprocessor/keyword/utility/is.hpp diff --git a/include/boost/contract/ext_/preprocessor/keyword/utility/remove.hpp b/include/boost/contract/aux_/preprocessor/keyword/utility/remove.hpp similarity index 100% rename from include/boost/contract/ext_/preprocessor/keyword/utility/remove.hpp rename to include/boost/contract/aux_/preprocessor/keyword/utility/remove.hpp diff --git a/include/boost/contract/ext_/preprocessor/keyword/virtual.hpp b/include/boost/contract/aux_/preprocessor/keyword/virtual.hpp similarity index 100% rename from include/boost/contract/ext_/preprocessor/keyword/virtual.hpp rename to include/boost/contract/aux_/preprocessor/keyword/virtual.hpp diff --git a/include/boost/contract/ext_/sfinae.hpp b/include/boost/contract/aux_/sfinae.hpp similarity index 100% rename from include/boost/contract/ext_/sfinae.hpp rename to include/boost/contract/aux_/sfinae.hpp diff --git a/include/boost/contract/ext_/preprocessor/keyword-generate.py b/include/boost/contract/ext_/preprocessor/keyword-generate.py deleted file mode 100644 index 070cdae..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword-generate.py +++ /dev/null @@ -1,179 +0,0 @@ - -# Copyright (C) 2008-2015 Lorenzo Caminiti -# Distributed under the Boost Software License, Version 1.0 -# (see accompanying file LICENSE_1_0.txt or a copy at -# http://www.boost.org/LICENSE_1_0.txt) -# Home at http://sourceforge.net/projects/contractpp - -import os -import sys - -entries = [ - { - 'directory': '.', - 'keywords': [ - 'alignas', - 'alignof', - 'and', - 'and_eq', - 'asm', - 'auto', - 'bitand', - 'bitor', - 'bool', - 'break', - 'case', - 'catch', - 'char', - 'char16_t', - 'char32_t', - 'class', - 'compl', - 'const', - 'constexpr', - 'const_cast', - 'continue', - 'decltype', - 'default', - 'delete', - 'do', - 'double', - 'dynamic_cast', - 'else', - 'enum', - 'explicit', - 'export', - 'extern', - 'false', - 'final', - 'float', - 'for', - 'friend', - 'goto', - 'if', - 'inline', - 'int', - 'long', - 'mutable', - 'namespace', - 'new', - 'noexcept', - 'not', - 'not_eq', - 'nullptr', - 'operator', - 'or', - 'or_eq', - 'override', - 'private', - 'protected', - 'public', - 'register', - 'reinterpret_cast', - 'return', - 'short', - 'signed', - 'sizeof', - 'static', - 'static_assert', - 'static_cast', - 'struct', - 'switch', - 'template', - 'this', - 'thread_local', - 'throw', - 'true', - 'try', - 'typedef', - 'typeid', - 'typename', - 'union', - 'unsigned', - 'using', - 'virtual', - 'void', - 'volatile', - 'wchar_t', - 'while', - 'xor', - 'xor_eq' - ] - }, - { - 'directory': 'contract', - 'keywords': [ - 'precondition', - 'postcondition', - 'extends', - 'verbatim', - 'ref', - 'as' - ] - } -] - -script = os.path.basename(sys.argv[0]) -root = sys.argv[0].replace('-generate.py', '', 1) -for entry in entries: - directory = os.path.join(root, entry['directory']) - if not os.path.exists(directory): os.makedirs(directory) - keywords = entry['keywords'] - for keyword in keywords: - filename = keyword + ".hpp" - path = os.path.join(directory, filename) - file = open(path, 'w') - - file.write(''' -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "{0}". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_{1}_FRONT(tokens) \\ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \\ - BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_{1}_BACK(tokens) \\ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \\ - BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `{2}` (this can be -// checked with `..._IS_{1}_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_REMOVE_FRONT(tokens) \\ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \\ - BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `{2}` (this can be -// checked with `..._IS_{1}_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_REMOVE_BACK(tokens) \\ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \\ - BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_CAT_TO_COMMA{2} , -#define {2}BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_CAT_TO_EMPTY{2} -#define {2}BOOST_CONTRACT_EXT_PP_KEYWORD_{1}_CAT_TO_EMPTY - -#endif // #include guard - -'''.format(script, keyword.upper(), keyword.lower())) - - file.close() - print "Written:", path - diff --git a/include/boost/contract/ext_/preprocessor/keyword/alignas.hpp b/include/boost/contract/ext_/preprocessor/keyword/alignas.hpp deleted file mode 100644 index 78d9ddf..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/alignas.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ALIGNAS_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ALIGNAS_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `alignas` (this can be -// checked with `..._IS_ALIGNAS_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `alignas` (this can be -// checked with `..._IS_ALIGNAS_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_CAT_TO_COMMAalignas , -#define alignasBOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_CAT_TO_EMPTYalignas -#define alignasBOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNAS_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/alignof.hpp b/include/boost/contract/ext_/preprocessor/keyword/alignof.hpp deleted file mode 100644 index fcc2582..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/alignof.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ALIGNOF_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ALIGNOF_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `alignof` (this can be -// checked with `..._IS_ALIGNOF_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `alignof` (this can be -// checked with `..._IS_ALIGNOF_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_CAT_TO_COMMAalignof , -#define alignofBOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_CAT_TO_EMPTYalignof -#define alignofBOOST_CONTRACT_EXT_PP_KEYWORD_ALIGNOF_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/and.hpp b/include/boost/contract/ext_/preprocessor/keyword/and.hpp deleted file mode 100644 index e002fb9..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/and.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_AND_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AND_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_AND_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AND_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_AND_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `and` (this can be -// checked with `..._IS_AND_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_AND_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `and` (this can be -// checked with `..._IS_AND_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_AND_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_CAT_TO_COMMAand , -#define andBOOST_CONTRACT_EXT_PP_KEYWORD_AND_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_CAT_TO_EMPTYand -#define andBOOST_CONTRACT_EXT_PP_KEYWORD_AND_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/and_eq.hpp b/include/boost/contract/ext_/preprocessor/keyword/and_eq.hpp deleted file mode 100644 index 8187400..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/and_eq.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AND_EQ_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AND_EQ_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `and_eq` (this can be -// checked with `..._IS_AND_EQ_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `and_eq` (this can be -// checked with `..._IS_AND_EQ_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_CAT_TO_COMMAand_eq , -#define and_eqBOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_CAT_TO_EMPTYand_eq -#define and_eqBOOST_CONTRACT_EXT_PP_KEYWORD_AND_EQ_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/asm.hpp b/include/boost/contract/ext_/preprocessor/keyword/asm.hpp deleted file mode 100644 index b73f2ae..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/asm.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ASM_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ASM_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `asm` (this can be -// checked with `..._IS_ASM_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `asm` (this can be -// checked with `..._IS_ASM_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_CAT_TO_COMMAasm , -#define asmBOOST_CONTRACT_EXT_PP_KEYWORD_ASM_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_ASM_CAT_TO_EMPTYasm -#define asmBOOST_CONTRACT_EXT_PP_KEYWORD_ASM_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/auto.hpp b/include/boost/contract/ext_/preprocessor/keyword/auto.hpp deleted file mode 100644 index 4c7598d..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/auto.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `auto` (this can be -// checked with `..._IS_AUTO_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `auto` (this can be -// checked with `..._IS_AUTO_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_CAT_TO_COMMAauto , -#define autoBOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_CAT_TO_EMPTYauto -#define autoBOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/bitand.hpp b/include/boost/contract/ext_/preprocessor/keyword/bitand.hpp deleted file mode 100644 index c01beb0..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/bitand.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_BITAND_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_BITAND_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `bitand` (this can be -// checked with `..._IS_BITAND_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `bitand` (this can be -// checked with `..._IS_BITAND_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_CAT_TO_COMMAbitand , -#define bitandBOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_CAT_TO_EMPTYbitand -#define bitandBOOST_CONTRACT_EXT_PP_KEYWORD_BITAND_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/bitor.hpp b/include/boost/contract/ext_/preprocessor/keyword/bitor.hpp deleted file mode 100644 index 8936413..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/bitor.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_BITOR_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_BITOR_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `bitor` (this can be -// checked with `..._IS_BITOR_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `bitor` (this can be -// checked with `..._IS_BITOR_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_CAT_TO_COMMAbitor , -#define bitorBOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_CAT_TO_EMPTYbitor -#define bitorBOOST_CONTRACT_EXT_PP_KEYWORD_BITOR_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/bool.hpp b/include/boost/contract/ext_/preprocessor/keyword/bool.hpp deleted file mode 100644 index ab22ee7..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/bool.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_BOOL_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_BOOL_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `bool` (this can be -// checked with `..._IS_BOOL_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `bool` (this can be -// checked with `..._IS_BOOL_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_CAT_TO_COMMAbool , -#define boolBOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_CAT_TO_EMPTYbool -#define boolBOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/break.hpp b/include/boost/contract/ext_/preprocessor/keyword/break.hpp deleted file mode 100644 index 5f831a0..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/break.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_BREAK_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_BREAK_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `break` (this can be -// checked with `..._IS_BREAK_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `break` (this can be -// checked with `..._IS_BREAK_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_CAT_TO_COMMAbreak , -#define breakBOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_CAT_TO_EMPTYbreak -#define breakBOOST_CONTRACT_EXT_PP_KEYWORD_BREAK_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/case.hpp b/include/boost/contract/ext_/preprocessor/keyword/case.hpp deleted file mode 100644 index 7178a84..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/case.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CASE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CASE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `case` (this can be -// checked with `..._IS_CASE_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `case` (this can be -// checked with `..._IS_CASE_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_CAT_TO_COMMAcase , -#define caseBOOST_CONTRACT_EXT_PP_KEYWORD_CASE_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CASE_CAT_TO_EMPTYcase -#define caseBOOST_CONTRACT_EXT_PP_KEYWORD_CASE_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/catch.hpp b/include/boost/contract/ext_/preprocessor/keyword/catch.hpp deleted file mode 100644 index 94edac1..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/catch.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CATCH_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CATCH_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `catch` (this can be -// checked with `..._IS_CATCH_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `catch` (this can be -// checked with `..._IS_CATCH_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_CAT_TO_COMMAcatch , -#define catchBOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_CAT_TO_EMPTYcatch -#define catchBOOST_CONTRACT_EXT_PP_KEYWORD_CATCH_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/char.hpp b/include/boost/contract/ext_/preprocessor/keyword/char.hpp deleted file mode 100644 index 86022ea..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/char.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CHAR_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CHAR_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `char` (this can be -// checked with `..._IS_CHAR_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `char` (this can be -// checked with `..._IS_CHAR_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_CAT_TO_COMMAchar , -#define charBOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_CAT_TO_EMPTYchar -#define charBOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/char16_t.hpp b/include/boost/contract/ext_/preprocessor/keyword/char16_t.hpp deleted file mode 100644 index 7829a07..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/char16_t.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CHAR16_T_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CHAR16_T_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `char16_t` (this can be -// checked with `..._IS_CHAR16_T_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `char16_t` (this can be -// checked with `..._IS_CHAR16_T_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_CAT_TO_COMMAchar16_t , -#define char16_tBOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_CAT_TO_EMPTYchar16_t -#define char16_tBOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/char32_t.hpp b/include/boost/contract/ext_/preprocessor/keyword/char32_t.hpp deleted file mode 100644 index 6a68ca0..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/char32_t.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CHAR32_T_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CHAR32_T_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `char32_t` (this can be -// checked with `..._IS_CHAR32_T_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `char32_t` (this can be -// checked with `..._IS_CHAR32_T_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_CAT_TO_COMMAchar32_t , -#define char32_tBOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_CAT_TO_EMPTYchar32_t -#define char32_tBOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/class.hpp b/include/boost/contract/ext_/preprocessor/keyword/class.hpp deleted file mode 100644 index f142250..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/class.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CLASS_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CLASS_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `class` (this can be -// checked with `..._IS_CLASS_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `class` (this can be -// checked with `..._IS_CLASS_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_CAT_TO_COMMAclass , -#define classBOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_CAT_TO_EMPTYclass -#define classBOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/compl.hpp b/include/boost/contract/ext_/preprocessor/keyword/compl.hpp deleted file mode 100644 index e5f8a4e..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/compl.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_COMPL_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_COMPL_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `compl` (this can be -// checked with `..._IS_COMPL_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `compl` (this can be -// checked with `..._IS_COMPL_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_CAT_TO_COMMAcompl , -#define complBOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_CAT_TO_EMPTYcompl -#define complBOOST_CONTRACT_EXT_PP_KEYWORD_COMPL_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/const.hpp b/include/boost/contract/ext_/preprocessor/keyword/const.hpp deleted file mode 100644 index a3df7f7..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/const.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `const` (this can be -// checked with `..._IS_CONST_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `const` (this can be -// checked with `..._IS_CONST_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAT_TO_COMMAconst , -#define constBOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAT_TO_EMPTYconst -#define constBOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/const_cast.hpp b/include/boost/contract/ext_/preprocessor/keyword/const_cast.hpp deleted file mode 100644 index 9012cf8..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/const_cast.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_CAST_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_CAST_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `const_cast` (this can be -// checked with `..._IS_CONST_CAST_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `const_cast` (this can be -// checked with `..._IS_CONST_CAST_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_CAT_TO_COMMAconst_cast , -#define const_castBOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_CAT_TO_EMPTYconst_cast -#define const_castBOOST_CONTRACT_EXT_PP_KEYWORD_CONST_CAST_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/constexpr.hpp b/include/boost/contract/ext_/preprocessor/keyword/constexpr.hpp deleted file mode 100644 index 3404485..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/constexpr.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONSTEXPR_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONSTEXPR_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `constexpr` (this can be -// checked with `..._IS_CONSTEXPR_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `constexpr` (this can be -// checked with `..._IS_CONSTEXPR_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_CAT_TO_COMMAconstexpr , -#define constexprBOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_CAT_TO_EMPTYconstexpr -#define constexprBOOST_CONTRACT_EXT_PP_KEYWORD_CONSTEXPR_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/continue.hpp b/include/boost/contract/ext_/preprocessor/keyword/continue.hpp deleted file mode 100644 index 08dcbdf..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/continue.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONTINUE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONTINUE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `continue` (this can be -// checked with `..._IS_CONTINUE_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `continue` (this can be -// checked with `..._IS_CONTINUE_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_CAT_TO_COMMAcontinue , -#define continueBOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_CAT_TO_EMPTYcontinue -#define continueBOOST_CONTRACT_EXT_PP_KEYWORD_CONTINUE_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/contract/as.hpp b/include/boost/contract/ext_/preprocessor/keyword/contract/as.hpp deleted file mode 100644 index 1ae66f1..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/contract/as.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_AS_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_AS_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AS_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_AS_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AS_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_AS_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `as` (this can be -// checked with `..._IS_AS_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_AS_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_AS_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `as` (this can be -// checked with `..._IS_AS_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_AS_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_AS_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_AS_CAT_TO_COMMAas , -#define asBOOST_CONTRACT_EXT_PP_KEYWORD_AS_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_AS_CAT_TO_EMPTYas -#define asBOOST_CONTRACT_EXT_PP_KEYWORD_AS_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/contract/extends.hpp b/include/boost/contract/ext_/preprocessor/keyword/contract/extends.hpp deleted file mode 100644 index b0a6703..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/contract/extends.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXTENDS_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXTENDS_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `extends` (this can be -// checked with `..._IS_EXTENDS_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `extends` (this can be -// checked with `..._IS_EXTENDS_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_CAT_TO_COMMAextends , -#define extendsBOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_CAT_TO_EMPTYextends -#define extendsBOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/contract/postcondition.hpp b/include/boost/contract/ext_/preprocessor/keyword/contract/postcondition.hpp deleted file mode 100644 index 388ad2d..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/contract/postcondition.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_POSTCONDITION_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_POSTCONDITION_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `postcondition` (this can be -// checked with `..._IS_POSTCONDITION_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `postcondition` (this can be -// checked with `..._IS_POSTCONDITION_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_CAT_TO_COMMApostcondition , -#define postconditionBOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_CAT_TO_EMPTYpostcondition -#define postconditionBOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/contract/precondition.hpp b/include/boost/contract/ext_/preprocessor/keyword/contract/precondition.hpp deleted file mode 100644 index d599019..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/contract/precondition.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_PRECONDITION_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_PRECONDITION_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `precondition` (this can be -// checked with `..._IS_PRECONDITION_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `precondition` (this can be -// checked with `..._IS_PRECONDITION_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_CAT_TO_COMMAprecondition , -#define preconditionBOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_CAT_TO_EMPTYprecondition -#define preconditionBOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/contract/ref.hpp b/include/boost/contract/ext_/preprocessor/keyword/contract/ref.hpp deleted file mode 100644 index 16752c6..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/contract/ref.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_REF_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_REF_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_REF_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_REF_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_REF_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_REF_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `ref` (this can be -// checked with `..._IS_REF_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_REF_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_REF_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `ref` (this can be -// checked with `..._IS_REF_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_REF_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_REF_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_REF_CAT_TO_COMMAref , -#define refBOOST_CONTRACT_EXT_PP_KEYWORD_REF_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_REF_CAT_TO_EMPTYref -#define refBOOST_CONTRACT_EXT_PP_KEYWORD_REF_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/contract/verbatim.hpp b/include/boost/contract/ext_/preprocessor/keyword/contract/verbatim.hpp deleted file mode 100644 index 1e15125..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/contract/verbatim.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VERBATIM_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VERBATIM_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `verbatim` (this can be -// checked with `..._IS_VERBATIM_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `verbatim` (this can be -// checked with `..._IS_VERBATIM_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_CAT_TO_COMMAverbatim , -#define verbatimBOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_CAT_TO_EMPTYverbatim -#define verbatimBOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/decltype.hpp b/include/boost/contract/ext_/preprocessor/keyword/decltype.hpp deleted file mode 100644 index 18e5b56..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/decltype.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DECLTYPE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DECLTYPE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `decltype` (this can be -// checked with `..._IS_DECLTYPE_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `decltype` (this can be -// checked with `..._IS_DECLTYPE_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_CAT_TO_COMMAdecltype , -#define decltypeBOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_CAT_TO_EMPTYdecltype -#define decltypeBOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/default.hpp b/include/boost/contract/ext_/preprocessor/keyword/default.hpp deleted file mode 100644 index 16c7317..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/default.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DEFAULT_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DEFAULT_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `default` (this can be -// checked with `..._IS_DEFAULT_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `default` (this can be -// checked with `..._IS_DEFAULT_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_CAT_TO_COMMAdefault , -#define defaultBOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_CAT_TO_EMPTYdefault -#define defaultBOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/delete.hpp b/include/boost/contract/ext_/preprocessor/keyword/delete.hpp deleted file mode 100644 index b6260fd..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/delete.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DELETE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DELETE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `delete` (this can be -// checked with `..._IS_DELETE_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `delete` (this can be -// checked with `..._IS_DELETE_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_CAT_TO_COMMAdelete , -#define deleteBOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_CAT_TO_EMPTYdelete -#define deleteBOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/do.hpp b/include/boost/contract/ext_/preprocessor/keyword/do.hpp deleted file mode 100644 index a135e3f..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/do.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_DO_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_DO_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DO_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_DO_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DO_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_DO_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `do` (this can be -// checked with `..._IS_DO_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_DO_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_DO_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `do` (this can be -// checked with `..._IS_DO_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_DO_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_DO_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_DO_CAT_TO_COMMAdo , -#define doBOOST_CONTRACT_EXT_PP_KEYWORD_DO_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_DO_CAT_TO_EMPTYdo -#define doBOOST_CONTRACT_EXT_PP_KEYWORD_DO_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/double.hpp b/include/boost/contract/ext_/preprocessor/keyword/double.hpp deleted file mode 100644 index 9a9ec1f..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/double.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DOUBLE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DOUBLE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `double` (this can be -// checked with `..._IS_DOUBLE_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `double` (this can be -// checked with `..._IS_DOUBLE_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_CAT_TO_COMMAdouble , -#define doubleBOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_CAT_TO_EMPTYdouble -#define doubleBOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/dynamic_cast.hpp b/include/boost/contract/ext_/preprocessor/keyword/dynamic_cast.hpp deleted file mode 100644 index d8d3fbd..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/dynamic_cast.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DYNAMIC_CAST_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DYNAMIC_CAST_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `dynamic_cast` (this can be -// checked with `..._IS_DYNAMIC_CAST_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `dynamic_cast` (this can be -// checked with `..._IS_DYNAMIC_CAST_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_CAT_TO_COMMAdynamic_cast , -#define dynamic_castBOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_CAT_TO_EMPTYdynamic_cast -#define dynamic_castBOOST_CONTRACT_EXT_PP_KEYWORD_DYNAMIC_CAST_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/else.hpp b/include/boost/contract/ext_/preprocessor/keyword/else.hpp deleted file mode 100644 index 6e0a5a6..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/else.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `else` (this can be -// checked with `..._IS_ELSE_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `else` (this can be -// checked with `..._IS_ELSE_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_CAT_TO_COMMAelse , -#define elseBOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_CAT_TO_EMPTYelse -#define elseBOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/enum.hpp b/include/boost/contract/ext_/preprocessor/keyword/enum.hpp deleted file mode 100644 index a7151e2..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/enum.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ENUM_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ENUM_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `enum` (this can be -// checked with `..._IS_ENUM_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `enum` (this can be -// checked with `..._IS_ENUM_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_CAT_TO_COMMAenum , -#define enumBOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_CAT_TO_EMPTYenum -#define enumBOOST_CONTRACT_EXT_PP_KEYWORD_ENUM_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/explicit.hpp b/include/boost/contract/ext_/preprocessor/keyword/explicit.hpp deleted file mode 100644 index 362c421..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/explicit.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXPLICIT_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXPLICIT_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `explicit` (this can be -// checked with `..._IS_EXPLICIT_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `explicit` (this can be -// checked with `..._IS_EXPLICIT_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_CAT_TO_COMMAexplicit , -#define explicitBOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_CAT_TO_EMPTYexplicit -#define explicitBOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/export.hpp b/include/boost/contract/ext_/preprocessor/keyword/export.hpp deleted file mode 100644 index f139e3d..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/export.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXPORT_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXPORT_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `export` (this can be -// checked with `..._IS_EXPORT_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `export` (this can be -// checked with `..._IS_EXPORT_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_CAT_TO_COMMAexport , -#define exportBOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_CAT_TO_EMPTYexport -#define exportBOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/extern.hpp b/include/boost/contract/ext_/preprocessor/keyword/extern.hpp deleted file mode 100644 index ae33a5a..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/extern.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXTERN_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXTERN_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `extern` (this can be -// checked with `..._IS_EXTERN_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `extern` (this can be -// checked with `..._IS_EXTERN_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_CAT_TO_COMMAextern , -#define externBOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_CAT_TO_EMPTYextern -#define externBOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/false.hpp b/include/boost/contract/ext_/preprocessor/keyword/false.hpp deleted file mode 100644 index 6339994..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/false.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FALSE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FALSE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `false` (this can be -// checked with `..._IS_FALSE_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `false` (this can be -// checked with `..._IS_FALSE_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_CAT_TO_COMMAfalse , -#define falseBOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_CAT_TO_EMPTYfalse -#define falseBOOST_CONTRACT_EXT_PP_KEYWORD_FALSE_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/final.hpp b/include/boost/contract/ext_/preprocessor/keyword/final.hpp deleted file mode 100644 index b163d51..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/final.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FINAL_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FINAL_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `final` (this can be -// checked with `..._IS_FINAL_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `final` (this can be -// checked with `..._IS_FINAL_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_CAT_TO_COMMAfinal , -#define finalBOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_CAT_TO_EMPTYfinal -#define finalBOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/float.hpp b/include/boost/contract/ext_/preprocessor/keyword/float.hpp deleted file mode 100644 index f7e5be2..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/float.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FLOAT_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FLOAT_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `float` (this can be -// checked with `..._IS_FLOAT_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `float` (this can be -// checked with `..._IS_FLOAT_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_CAT_TO_COMMAfloat , -#define floatBOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_CAT_TO_EMPTYfloat -#define floatBOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/for.hpp b/include/boost/contract/ext_/preprocessor/keyword/for.hpp deleted file mode 100644 index c2d0472..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/for.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FOR_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FOR_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `for` (this can be -// checked with `..._IS_FOR_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `for` (this can be -// checked with `..._IS_FOR_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_CAT_TO_COMMAfor , -#define forBOOST_CONTRACT_EXT_PP_KEYWORD_FOR_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_FOR_CAT_TO_EMPTYfor -#define forBOOST_CONTRACT_EXT_PP_KEYWORD_FOR_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/friend.hpp b/include/boost/contract/ext_/preprocessor/keyword/friend.hpp deleted file mode 100644 index e8799c2..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/friend.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FRIEND_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FRIEND_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `friend` (this can be -// checked with `..._IS_FRIEND_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `friend` (this can be -// checked with `..._IS_FRIEND_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_CAT_TO_COMMAfriend , -#define friendBOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_CAT_TO_EMPTYfriend -#define friendBOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/goto.hpp b/include/boost/contract/ext_/preprocessor/keyword/goto.hpp deleted file mode 100644 index 90f1345..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/goto.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_GOTO_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_GOTO_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `goto` (this can be -// checked with `..._IS_GOTO_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `goto` (this can be -// checked with `..._IS_GOTO_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_CAT_TO_COMMAgoto , -#define gotoBOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_CAT_TO_EMPTYgoto -#define gotoBOOST_CONTRACT_EXT_PP_KEYWORD_GOTO_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/if.hpp b/include/boost/contract/ext_/preprocessor/keyword/if.hpp deleted file mode 100644 index 3b1d17b..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/if.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_IF_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IF_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `if` (this can be -// checked with `..._IS_IF_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `if` (this can be -// checked with `..._IS_IF_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IF_CAT_TO_COMMAif , -#define ifBOOST_CONTRACT_EXT_PP_KEYWORD_IF_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IF_CAT_TO_EMPTYif -#define ifBOOST_CONTRACT_EXT_PP_KEYWORD_IF_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/inline.hpp b/include/boost/contract/ext_/preprocessor/keyword/inline.hpp deleted file mode 100644 index 00fd4af..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/inline.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_INLINE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_INLINE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `inline` (this can be -// checked with `..._IS_INLINE_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `inline` (this can be -// checked with `..._IS_INLINE_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_CAT_TO_COMMAinline , -#define inlineBOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_CAT_TO_EMPTYinline -#define inlineBOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/int.hpp b/include/boost/contract/ext_/preprocessor/keyword/int.hpp deleted file mode 100644 index d964fe8..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/int.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_INT_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_INT_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_INT_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_INT_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_INT_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_INT_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `int` (this can be -// checked with `..._IS_INT_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_INT_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_INT_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `int` (this can be -// checked with `..._IS_INT_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_INT_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_INT_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_INT_CAT_TO_COMMAint , -#define intBOOST_CONTRACT_EXT_PP_KEYWORD_INT_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_INT_CAT_TO_EMPTYint -#define intBOOST_CONTRACT_EXT_PP_KEYWORD_INT_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/long.hpp b/include/boost/contract/ext_/preprocessor/keyword/long.hpp deleted file mode 100644 index f356b7b..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/long.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_LONG_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_LONG_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `long` (this can be -// checked with `..._IS_LONG_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `long` (this can be -// checked with `..._IS_LONG_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_CAT_TO_COMMAlong , -#define longBOOST_CONTRACT_EXT_PP_KEYWORD_LONG_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_CAT_TO_EMPTYlong -#define longBOOST_CONTRACT_EXT_PP_KEYWORD_LONG_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/mutable.hpp b/include/boost/contract/ext_/preprocessor/keyword/mutable.hpp deleted file mode 100644 index 90582f5..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/mutable.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_MUTABLE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_MUTABLE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `mutable` (this can be -// checked with `..._IS_MUTABLE_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `mutable` (this can be -// checked with `..._IS_MUTABLE_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_CAT_TO_COMMAmutable , -#define mutableBOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_CAT_TO_EMPTYmutable -#define mutableBOOST_CONTRACT_EXT_PP_KEYWORD_MUTABLE_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/namespace.hpp b/include/boost/contract/ext_/preprocessor/keyword/namespace.hpp deleted file mode 100644 index 4496d66..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/namespace.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `namespace` (this can be -// checked with `..._IS_NAMESPACE_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `namespace` (this can be -// checked with `..._IS_NAMESPACE_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_CAT_TO_COMMAnamespace , -#define namespaceBOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_CAT_TO_EMPTYnamespace -#define namespaceBOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/new.hpp b/include/boost/contract/ext_/preprocessor/keyword/new.hpp deleted file mode 100644 index 3b5db8d..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/new.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NEW_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NEW_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `new` (this can be -// checked with `..._IS_NEW_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `new` (this can be -// checked with `..._IS_NEW_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_CAT_TO_COMMAnew , -#define newBOOST_CONTRACT_EXT_PP_KEYWORD_NEW_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_CAT_TO_EMPTYnew -#define newBOOST_CONTRACT_EXT_PP_KEYWORD_NEW_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/noexcept.hpp b/include/boost/contract/ext_/preprocessor/keyword/noexcept.hpp deleted file mode 100644 index a9d975e..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/noexcept.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NOEXCEPT_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NOEXCEPT_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `noexcept` (this can be -// checked with `..._IS_NOEXCEPT_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `noexcept` (this can be -// checked with `..._IS_NOEXCEPT_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_CAT_TO_COMMAnoexcept , -#define noexceptBOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_CAT_TO_EMPTYnoexcept -#define noexceptBOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/not.hpp b/include/boost/contract/ext_/preprocessor/keyword/not.hpp deleted file mode 100644 index 82058b0..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/not.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NOT_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NOT_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `not` (this can be -// checked with `..._IS_NOT_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `not` (this can be -// checked with `..._IS_NOT_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_CAT_TO_COMMAnot , -#define notBOOST_CONTRACT_EXT_PP_KEYWORD_NOT_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_CAT_TO_EMPTYnot -#define notBOOST_CONTRACT_EXT_PP_KEYWORD_NOT_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/not_eq.hpp b/include/boost/contract/ext_/preprocessor/keyword/not_eq.hpp deleted file mode 100644 index f3a8dc5..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/not_eq.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NOT_EQ_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NOT_EQ_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `not_eq` (this can be -// checked with `..._IS_NOT_EQ_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `not_eq` (this can be -// checked with `..._IS_NOT_EQ_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_CAT_TO_COMMAnot_eq , -#define not_eqBOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_CAT_TO_EMPTYnot_eq -#define not_eqBOOST_CONTRACT_EXT_PP_KEYWORD_NOT_EQ_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/nullptr.hpp b/include/boost/contract/ext_/preprocessor/keyword/nullptr.hpp deleted file mode 100644 index 88dfa6f..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/nullptr.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NULLPTR_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NULLPTR_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `nullptr` (this can be -// checked with `..._IS_NULLPTR_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `nullptr` (this can be -// checked with `..._IS_NULLPTR_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_CAT_TO_COMMAnullptr , -#define nullptrBOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_CAT_TO_EMPTYnullptr -#define nullptrBOOST_CONTRACT_EXT_PP_KEYWORD_NULLPTR_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/operator.hpp b/include/boost/contract/ext_/preprocessor/keyword/operator.hpp deleted file mode 100644 index b2b46ba..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/operator.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OPERATOR_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OPERATOR_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `operator` (this can be -// checked with `..._IS_OPERATOR_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `operator` (this can be -// checked with `..._IS_OPERATOR_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_CAT_TO_COMMAoperator , -#define operatorBOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_CAT_TO_EMPTYoperator -#define operatorBOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/or.hpp b/include/boost/contract/ext_/preprocessor/keyword/or.hpp deleted file mode 100644 index eb7e036..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/or.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_OR_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OR_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_OR_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OR_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_OR_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `or` (this can be -// checked with `..._IS_OR_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_OR_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `or` (this can be -// checked with `..._IS_OR_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_OR_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_CAT_TO_COMMAor , -#define orBOOST_CONTRACT_EXT_PP_KEYWORD_OR_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_CAT_TO_EMPTYor -#define orBOOST_CONTRACT_EXT_PP_KEYWORD_OR_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/or_eq.hpp b/include/boost/contract/ext_/preprocessor/keyword/or_eq.hpp deleted file mode 100644 index f4e4a87..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/or_eq.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OR_EQ_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OR_EQ_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `or_eq` (this can be -// checked with `..._IS_OR_EQ_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `or_eq` (this can be -// checked with `..._IS_OR_EQ_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_CAT_TO_COMMAor_eq , -#define or_eqBOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_CAT_TO_EMPTYor_eq -#define or_eqBOOST_CONTRACT_EXT_PP_KEYWORD_OR_EQ_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/override.hpp b/include/boost/contract/ext_/preprocessor/keyword/override.hpp deleted file mode 100644 index fdde6b5..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/override.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OVERRIDE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OVERRIDE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `override` (this can be -// checked with `..._IS_OVERRIDE_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `override` (this can be -// checked with `..._IS_OVERRIDE_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_CAT_TO_COMMAoverride , -#define overrideBOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_CAT_TO_EMPTYoverride -#define overrideBOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/register.hpp b/include/boost/contract/ext_/preprocessor/keyword/register.hpp deleted file mode 100644 index 8215cf3..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/register.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_REGISTER_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_REGISTER_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `register` (this can be -// checked with `..._IS_REGISTER_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `register` (this can be -// checked with `..._IS_REGISTER_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_CAT_TO_COMMAregister , -#define registerBOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_CAT_TO_EMPTYregister -#define registerBOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/reinterpret_cast.hpp b/include/boost/contract/ext_/preprocessor/keyword/reinterpret_cast.hpp deleted file mode 100644 index 927b532..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/reinterpret_cast.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_REINTERPRET_CAST_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_REINTERPRET_CAST_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `reinterpret_cast` (this can be -// checked with `..._IS_REINTERPRET_CAST_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `reinterpret_cast` (this can be -// checked with `..._IS_REINTERPRET_CAST_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_CAT_TO_COMMAreinterpret_cast , -#define reinterpret_castBOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_CAT_TO_EMPTYreinterpret_cast -#define reinterpret_castBOOST_CONTRACT_EXT_PP_KEYWORD_REINTERPRET_CAST_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/return.hpp b/include/boost/contract/ext_/preprocessor/keyword/return.hpp deleted file mode 100644 index 487b5b7..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/return.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `return` (this can be -// checked with `..._IS_RETURN_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `return` (this can be -// checked with `..._IS_RETURN_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_CAT_TO_COMMAreturn , -#define returnBOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_CAT_TO_EMPTYreturn -#define returnBOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/short.hpp b/include/boost/contract/ext_/preprocessor/keyword/short.hpp deleted file mode 100644 index 4ca9dcc..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/short.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SHORT_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SHORT_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `short` (this can be -// checked with `..._IS_SHORT_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `short` (this can be -// checked with `..._IS_SHORT_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_CAT_TO_COMMAshort , -#define shortBOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_CAT_TO_EMPTYshort -#define shortBOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/signed.hpp b/include/boost/contract/ext_/preprocessor/keyword/signed.hpp deleted file mode 100644 index b87a23a..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/signed.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SIGNED_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SIGNED_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `signed` (this can be -// checked with `..._IS_SIGNED_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `signed` (this can be -// checked with `..._IS_SIGNED_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_CAT_TO_COMMAsigned , -#define signedBOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_CAT_TO_EMPTYsigned -#define signedBOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/sizeof.hpp b/include/boost/contract/ext_/preprocessor/keyword/sizeof.hpp deleted file mode 100644 index 925d4fb..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/sizeof.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SIZEOF_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SIZEOF_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `sizeof` (this can be -// checked with `..._IS_SIZEOF_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `sizeof` (this can be -// checked with `..._IS_SIZEOF_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_CAT_TO_COMMAsizeof , -#define sizeofBOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_CAT_TO_EMPTYsizeof -#define sizeofBOOST_CONTRACT_EXT_PP_KEYWORD_SIZEOF_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/static.hpp b/include/boost/contract/ext_/preprocessor/keyword/static.hpp deleted file mode 100644 index 6b737df..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/static.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STATIC_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STATIC_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `static` (this can be -// checked with `..._IS_STATIC_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `static` (this can be -// checked with `..._IS_STATIC_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAT_TO_COMMAstatic , -#define staticBOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAT_TO_EMPTYstatic -#define staticBOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/static_assert.hpp b/include/boost/contract/ext_/preprocessor/keyword/static_assert.hpp deleted file mode 100644 index 3e05070..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/static_assert.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STATIC_ASSERT_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STATIC_ASSERT_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `static_assert` (this can be -// checked with `..._IS_STATIC_ASSERT_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `static_assert` (this can be -// checked with `..._IS_STATIC_ASSERT_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_CAT_TO_COMMAstatic_assert , -#define static_assertBOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_CAT_TO_EMPTYstatic_assert -#define static_assertBOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_ASSERT_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/static_cast.hpp b/include/boost/contract/ext_/preprocessor/keyword/static_cast.hpp deleted file mode 100644 index f2d69bc..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/static_cast.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STATIC_CAST_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STATIC_CAST_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `static_cast` (this can be -// checked with `..._IS_STATIC_CAST_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `static_cast` (this can be -// checked with `..._IS_STATIC_CAST_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_CAT_TO_COMMAstatic_cast , -#define static_castBOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_CAT_TO_EMPTYstatic_cast -#define static_castBOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_CAST_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/struct.hpp b/include/boost/contract/ext_/preprocessor/keyword/struct.hpp deleted file mode 100644 index 333f463..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/struct.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STRUCT_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STRUCT_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `struct` (this can be -// checked with `..._IS_STRUCT_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `struct` (this can be -// checked with `..._IS_STRUCT_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_CAT_TO_COMMAstruct , -#define structBOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_CAT_TO_EMPTYstruct -#define structBOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/switch.hpp b/include/boost/contract/ext_/preprocessor/keyword/switch.hpp deleted file mode 100644 index 04e096d..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/switch.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SWITCH_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SWITCH_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `switch` (this can be -// checked with `..._IS_SWITCH_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `switch` (this can be -// checked with `..._IS_SWITCH_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_CAT_TO_COMMAswitch , -#define switchBOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_CAT_TO_EMPTYswitch -#define switchBOOST_CONTRACT_EXT_PP_KEYWORD_SWITCH_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/template.hpp b/include/boost/contract/ext_/preprocessor/keyword/template.hpp deleted file mode 100644 index cf9f041..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/template.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TEMPLATE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TEMPLATE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `template` (this can be -// checked with `..._IS_TEMPLATE_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `template` (this can be -// checked with `..._IS_TEMPLATE_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_CAT_TO_COMMAtemplate , -#define templateBOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_CAT_TO_EMPTYtemplate -#define templateBOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/this.hpp b/include/boost/contract/ext_/preprocessor/keyword/this.hpp deleted file mode 100644 index 3639e1f..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/this.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_THIS_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_THIS_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `this` (this can be -// checked with `..._IS_THIS_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `this` (this can be -// checked with `..._IS_THIS_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_CAT_TO_COMMAthis , -#define thisBOOST_CONTRACT_EXT_PP_KEYWORD_THIS_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_THIS_CAT_TO_EMPTYthis -#define thisBOOST_CONTRACT_EXT_PP_KEYWORD_THIS_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/thread_local.hpp b/include/boost/contract/ext_/preprocessor/keyword/thread_local.hpp deleted file mode 100644 index dc542e6..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/thread_local.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_THREAD_LOCAL_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_THREAD_LOCAL_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `thread_local` (this can be -// checked with `..._IS_THREAD_LOCAL_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `thread_local` (this can be -// checked with `..._IS_THREAD_LOCAL_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_CAT_TO_COMMAthread_local , -#define thread_localBOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_CAT_TO_EMPTYthread_local -#define thread_localBOOST_CONTRACT_EXT_PP_KEYWORD_THREAD_LOCAL_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/throw.hpp b/include/boost/contract/ext_/preprocessor/keyword/throw.hpp deleted file mode 100644 index 0f53f68..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/throw.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_THROW_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_THROW_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `throw` (this can be -// checked with `..._IS_THROW_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `throw` (this can be -// checked with `..._IS_THROW_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_CAT_TO_COMMAthrow , -#define throwBOOST_CONTRACT_EXT_PP_KEYWORD_THROW_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_CAT_TO_EMPTYthrow -#define throwBOOST_CONTRACT_EXT_PP_KEYWORD_THROW_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/true.hpp b/include/boost/contract/ext_/preprocessor/keyword/true.hpp deleted file mode 100644 index 141c3ea..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/true.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TRUE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TRUE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `true` (this can be -// checked with `..._IS_TRUE_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `true` (this can be -// checked with `..._IS_TRUE_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_CAT_TO_COMMAtrue , -#define trueBOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_CAT_TO_EMPTYtrue -#define trueBOOST_CONTRACT_EXT_PP_KEYWORD_TRUE_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/try.hpp b/include/boost/contract/ext_/preprocessor/keyword/try.hpp deleted file mode 100644 index a37b998..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/try.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TRY_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TRY_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `try` (this can be -// checked with `..._IS_TRY_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `try` (this can be -// checked with `..._IS_TRY_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_CAT_TO_COMMAtry , -#define tryBOOST_CONTRACT_EXT_PP_KEYWORD_TRY_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRY_CAT_TO_EMPTYtry -#define tryBOOST_CONTRACT_EXT_PP_KEYWORD_TRY_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/typedef.hpp b/include/boost/contract/ext_/preprocessor/keyword/typedef.hpp deleted file mode 100644 index 1bab3c7..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/typedef.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `typedef` (this can be -// checked with `..._IS_TYPEDEF_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `typedef` (this can be -// checked with `..._IS_TYPEDEF_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_CAT_TO_COMMAtypedef , -#define typedefBOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_CAT_TO_EMPTYtypedef -#define typedefBOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/typeid.hpp b/include/boost/contract/ext_/preprocessor/keyword/typeid.hpp deleted file mode 100644 index 4ca9795..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/typeid.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEID_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEID_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `typeid` (this can be -// checked with `..._IS_TYPEID_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `typeid` (this can be -// checked with `..._IS_TYPEID_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_CAT_TO_COMMAtypeid , -#define typeidBOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_CAT_TO_EMPTYtypeid -#define typeidBOOST_CONTRACT_EXT_PP_KEYWORD_TYPEID_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/typename.hpp b/include/boost/contract/ext_/preprocessor/keyword/typename.hpp deleted file mode 100644 index 71b9c43..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/typename.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPENAME_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPENAME_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `typename` (this can be -// checked with `..._IS_TYPENAME_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `typename` (this can be -// checked with `..._IS_TYPENAME_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_CAT_TO_COMMAtypename , -#define typenameBOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_CAT_TO_EMPTYtypename -#define typenameBOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/union.hpp b/include/boost/contract/ext_/preprocessor/keyword/union.hpp deleted file mode 100644 index 2d67f4c..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/union.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_UNION_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_UNION_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `union` (this can be -// checked with `..._IS_UNION_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `union` (this can be -// checked with `..._IS_UNION_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_CAT_TO_COMMAunion , -#define unionBOOST_CONTRACT_EXT_PP_KEYWORD_UNION_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNION_CAT_TO_EMPTYunion -#define unionBOOST_CONTRACT_EXT_PP_KEYWORD_UNION_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/unsigned.hpp b/include/boost/contract/ext_/preprocessor/keyword/unsigned.hpp deleted file mode 100644 index c503353..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/unsigned.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_UNSIGNED_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_UNSIGNED_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `unsigned` (this can be -// checked with `..._IS_UNSIGNED_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `unsigned` (this can be -// checked with `..._IS_UNSIGNED_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_CAT_TO_COMMAunsigned , -#define unsignedBOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_CAT_TO_EMPTYunsigned -#define unsignedBOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/using.hpp b/include/boost/contract/ext_/preprocessor/keyword/using.hpp deleted file mode 100644 index 610459c..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/using.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_USING_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_USING_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_USING_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_USING_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_USING_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_USING_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `using` (this can be -// checked with `..._IS_USING_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_USING_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_USING_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `using` (this can be -// checked with `..._IS_USING_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_USING_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_USING_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_USING_CAT_TO_COMMAusing , -#define usingBOOST_CONTRACT_EXT_PP_KEYWORD_USING_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_USING_CAT_TO_EMPTYusing -#define usingBOOST_CONTRACT_EXT_PP_KEYWORD_USING_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/void.hpp b/include/boost/contract/ext_/preprocessor/keyword/void.hpp deleted file mode 100644 index 70de6c5..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/void.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `void` (this can be -// checked with `..._IS_VOID_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `void` (this can be -// checked with `..._IS_VOID_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_CAT_TO_COMMAvoid , -#define voidBOOST_CONTRACT_EXT_PP_KEYWORD_VOID_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_CAT_TO_EMPTYvoid -#define voidBOOST_CONTRACT_EXT_PP_KEYWORD_VOID_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/volatile.hpp b/include/boost/contract/ext_/preprocessor/keyword/volatile.hpp deleted file mode 100644 index 22aa9f1..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/volatile.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOLATILE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOLATILE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `volatile` (this can be -// checked with `..._IS_VOLATILE_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `volatile` (this can be -// checked with `..._IS_VOLATILE_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_CAT_TO_COMMAvolatile , -#define volatileBOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_CAT_TO_EMPTYvolatile -#define volatileBOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/wchar_t.hpp b/include/boost/contract/ext_/preprocessor/keyword/wchar_t.hpp deleted file mode 100644 index ebc76ca..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/wchar_t.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_WCHAR_T_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_WCHAR_T_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `wchar_t` (this can be -// checked with `..._IS_WCHAR_T_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `wchar_t` (this can be -// checked with `..._IS_WCHAR_T_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_CAT_TO_COMMAwchar_t , -#define wchar_tBOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_CAT_TO_EMPTYwchar_t -#define wchar_tBOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/while.hpp b/include/boost/contract/ext_/preprocessor/keyword/while.hpp deleted file mode 100644 index 018395f..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/while.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_WHILE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_WHILE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `while` (this can be -// checked with `..._IS_WHILE_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `while` (this can be -// checked with `..._IS_WHILE_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_CAT_TO_COMMAwhile , -#define whileBOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_CAT_TO_EMPTYwhile -#define whileBOOST_CONTRACT_EXT_PP_KEYWORD_WHILE_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/xor.hpp b/include/boost/contract/ext_/preprocessor/keyword/xor.hpp deleted file mode 100644 index 2ef3a37..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/xor.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_XOR_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_XOR_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `xor` (this can be -// checked with `..._IS_XOR_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `xor` (this can be -// checked with `..._IS_XOR_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_CAT_TO_COMMAxor , -#define xorBOOST_CONTRACT_EXT_PP_KEYWORD_XOR_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_CAT_TO_EMPTYxor -#define xorBOOST_CONTRACT_EXT_PP_KEYWORD_XOR_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/keyword/xor_eq.hpp b/include/boost/contract/ext_/preprocessor/keyword/xor_eq.hpp deleted file mode 100644 index 98720b3..0000000 --- a/include/boost/contract/ext_/preprocessor/keyword/xor_eq.hpp +++ /dev/null @@ -1,48 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "keyword-generate.py". - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_XOR_EQ_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_KEYWORD_IS_XOR_EQ_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `xor_eq` (this can be -// checked with `..._IS_XOR_EQ_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `xor_eq` (this can be -// checked with `..._IS_XOR_EQ_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_CAT_TO_COMMAxor_eq , -#define xor_eqBOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_CAT_TO_COMMA , - -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_CAT_TO_EMPTYxor_eq -#define xor_eqBOOST_CONTRACT_EXT_PP_KEYWORD_XOR_EQ_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/paren/front.hpp b/include/boost/contract/ext_/preprocessor/paren/front.hpp deleted file mode 100644 index 0dc179b..0000000 --- a/include/boost/contract/ext_/preprocessor/paren/front.hpp +++ /dev/null @@ -1,25 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_PAREN_FRONT_HPP_ -#define BOOST_CONTRACT_EXT_PP_PAREN_FRONT_HPP_ - -/* PRIVATE */ - -#define BOOST_CONTRACT_EXT_PP_PAREN_FRONT_SPLIT_(...) (__VA_ARGS__) , - -#define BOOST_CONTRACT_EXT_PP_PAREN_FRONT_PAIR_FIRST_(first, second) first - -// NOTE: Using `BOOST_PP_TUPLE_ELEM(2, 0, pair)` confuses MSVC here. -#define BOOST_CONTRACT_EXT_PP_PAREN_FRONT_OO_(pair) \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT_PAIR_FIRST_ pair - -/* PUBLIC */ - -// Precondition: tokens == `(...[, ...]*) ...[, ...]*`. -// Expand to `(...[, ...]*)` in front above (discarding any trailing tokens). -// NOTE: To get the trailing `...[, ...]*` use `BOOST_PP_TUPLE_EAT(0) tokens`. -#define BOOST_CONTRACT_EXT_PP_PAREN_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT_OO_(( \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT_SPLIT_ tokens)) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/paren/has.hpp b/include/boost/contract/ext_/preprocessor/paren/has.hpp deleted file mode 100644 index cea1054..0000000 --- a/include/boost/contract/ext_/preprocessor/paren/has.hpp +++ /dev/null @@ -1,30 +0,0 @@ - -// Copyright (C) 2008-2012 Lorenzo Caminiti -// Distributed under the Boost Software License, Version 1.0 -// (see accompanying file LICENSE_1_0.txt or a copy at -// http://www.boost.org/LICENSE_1_0.txt) -// Home at http://sourceforge.net/projects/contractpp - -#ifndef BOOST_CONTRACT_EXT_PP_HAS_PAREN_HPP_ -#define BOOST_CONTRACT_EXT_PP_HAS_PAREN_HPP_ - -#include <boost/preprocessor/detail/check.hpp> - -/* PRIVATE */ - -// Variadic so handle any arity. -#define BOOST_CONTRACT_EXT_PP_HAS_PAREN_CHECK(...) \ - 1 - -#define BOOST_PP_CHECK_RESULT_BOOST_CONTRACT_EXT_PP_HAS_PAREN_CHECK \ - 0, BOOST_PP_NIL - -/* PUBLIC */ - -// NOTE: tokens can be EMPTY() (because of the variadic CHECK(...) above). -// Implementation: Adapted from BOOST_PP_IS_UNARY but for variadic macros. -#define BOOST_CONTRACT_EXT_PP_HAS_PAREN(tokens) \ - BOOST_PP_CHECK(tokens, BOOST_CONTRACT_EXT_PP_HAS_PAREN_CHECK) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/parenthesize.hpp b/include/boost/contract/ext_/preprocessor/parenthesize.hpp deleted file mode 100644 index 845d1e0..0000000 --- a/include/boost/contract/ext_/preprocessor/parenthesize.hpp +++ /dev/null @@ -1,24 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_PARENTHESIZE_HPP_ -#define BOOST_CONTRACT_EXT_PP_PARENTHESIZE_HPP_ - -#include <boost/contract/ext_/preprocessor/paren/has.hpp> -#include <boost/preprocessor/tuple/rem.hpp> -#include <boost/preprocessor/control/iif.hpp> - -/* PUBLIC */ - -// NOTE: tokens can be EMPTY(). -#define BOOST_CONTRACT_EXT_PP_PARENTHESIZE(tokens) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(tokens), tokens, (tokens)) - -// NOTE: tokens can be EMPTY(). -#define BOOST_CONTRACT_EXT_PP_UNPARENTHESIZE(tokens) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(tokens), \ - BOOST_PP_TUPLE_REM_CTOR \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(tokens) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/stringize.hpp b/include/boost/contract/ext_/preprocessor/stringize.hpp deleted file mode 100644 index 30acc73..0000000 --- a/include/boost/contract/ext_/preprocessor/stringize.hpp +++ /dev/null @@ -1,21 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_STRINGIZE_HPP_ -#define BOOST_CONTRACT_EXT_PP_STRINGIZE_HPP_ - -#include <boost/contract/ext_/preprocessor/utility/empty.hpp> -#include <boost/preprocessor/control/iif.hpp> -#include <boost/preprocessor/tuple/eat.hpp> -#include <boost/preprocessor/stringize.hpp> - -/* PUBLIC */ - -// Handle tokens == EMPTY() (BOOST_PP_STRINGIZE does not). -#define BOOST_CONTRACT_EXT_PP_STRINGIZE(tokens) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(tokens), \ - "" BOOST_PP_TUPLE_EAT(1) \ - , \ - BOOST_PP_STRINGIZE \ - )(tokens) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion-generate.py b/include/boost/contract/ext_/preprocessor/traits/assertion-generate.py deleted file mode 100644 index 3a9fc16..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion-generate.py +++ /dev/null @@ -1,233 +0,0 @@ - -import os -import sys - -LIMIT = 64 - -def code(): - result = '' - for n in range(1, LIMIT + 1): - result = result + ''' -/* PUBLIC ({0}) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_{0}(d, l, decl) \\ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_{0}_ \\ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_{0}_ \\ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_{0}_ \\ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_{0} \\ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \\ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \\ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_{0} \\ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \\ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \\ - , \\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_{0}_ \\ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_{0}(d, l, decl) \\ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_{0}_ \\ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_{0}_ \\ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_{0}_ \\ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \\ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_{0} \\ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \\ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \\ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_{0} \\ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \\ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \\ - , \\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_{0}_ \\ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_{0}( \\ - d, l, decl) \\ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \\ - decl), \\ - 1 \\ - , \\ - 0 \\ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_{0}( \\ - d, l, decl) \\ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \\ - decl), \\ - 1 \\ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \\ - 1 \\ - , \\ - 0 \\ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_{0}( \\ - d, l, decl_traits) \\ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_{0}( \\ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_{0}( \\ - d, l, decl_traits) \\ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \\ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \\ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_{0}\\ - , \\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_{0}_ \\ - )(d, l, decl_traits) - -/* PRIVATE ({0}) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_{0}_( \\ - d, l, decl_traits) \\ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_{0}_( \\ - d, l, decl) \\ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_{0}_(d, l, decl) \\ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_{0}_(d, l, decl) \\ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_{0}_(d, l, decl) \\ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_{0}_(d, l, decl) \\ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_{0}_(d, l, decl) \\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_{0}_(d, l, \\ - decl, \\ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \\ - d, decl BOOST_PP_NIL) \\ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_{0}_( \\ - d, l, decl, decl_type) \\ - BOOST_PP_IIF(BOOST_PP_EXPAND( \\ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \\ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \\ - 0 \\ - , \\ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \\ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \\ - ) \\ - ) , \\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_{0}_ \\ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \\ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_{0}_ \\ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \\ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_{0}_ \\ - , \\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_{0}_ \\ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_{0}_( \\ - d, l, decl) \\ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_{0}_ \\ - , \\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_{0}_ \\ - )(d, l, decl) - -'''.format(n, n + 1) - return result - -script = os.path.basename(sys.argv[0]) -path = sys.argv[0].replace('-generate.py', '', 1) + ".hpp" -file = open(path, 'w') - -file.write(''' -#ifndef BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HPP_ -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "{0}". - -#include <boost/contract/ext_/preprocessor/traits/assertion/bool.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/const.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/if.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/oldof.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/return.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/typedef.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/using.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/namespace.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/type.hpp> -#include <boost/contract/ext_/preprocessor/keyword/namespace.hpp> -#include <boost/contract/ext_/preprocessor/keyword/using.hpp> -#include <boost/contract/ext_/preprocessor/keyword/template.hpp> -#include <boost/contract/ext_/preprocessor/keyword/typedef.hpp> -#include <boost/contract/ext_/preprocessor/keyword/return.hpp> -#include <boost/contract/ext_/preprocessor/keyword/const.hpp> -#include <boost/contract/ext_/preprocessor/keyword/if.hpp> -#include <boost/contract/ext_/preprocessor/keyword/else.hpp> -#include <boost/contract/ext_/preprocessor/paren/has.hpp> -#include <boost/preprocessor/tuple/eat.hpp> -#include <boost/preprocessor/control/iif.hpp> - -/* PUBLIC */ - -// Maximum number of nested assertions that can be parsed (before pp errors). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_LIMIT {1} - -/* PRIVATE */ - -// Expand to 1 if decl = `[template(,,,)] using ...`, otherwise to 0. -// EXPAND for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl) \\ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_USING_FRONT(\\ - decl), \\ - 1 BOOST_PP_TUPLE_EAT(1) \\ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TEMPLATE_FRONT(decl), \\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_TEMPLATE_ \\ - , \\ - 0 BOOST_PP_TUPLE_EAT(1) \\ - ))(decl)) - -// Precondition: decl = `template ...` -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_TEMPLATE_(decl) \\ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \\ - BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_REMOVE_FRONT(decl)), \\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_TEMPLATE_PAREN_ \\ - , \\ - 0 BOOST_PP_TUPLE_EAT(1) \\ - )(BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_REMOVE_FRONT(decl)) - -// Precondition: decl = `(,,,) ...` -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_TEMPLATE_PAREN_( \\ - decl) \\ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_USING_FRONT( \\ - BOOST_PP_TUPLE_EAT(0) decl), 1, 0) -{2} -#endif // #include guard -'''.format(script, LIMIT, code())) - -file.close() -print "Written:", path - diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion.hpp deleted file mode 100644 index ab6928f..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion.hpp +++ /dev/null @@ -1,9599 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HPP_ -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "assertion-generate.py". - -#include <boost/contract/ext_/preprocessor/traits/assertion/bool.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/const.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/if.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/oldof.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/return.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/typedef.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/using.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/namespace.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/type.hpp> -#include <boost/contract/ext_/preprocessor/keyword/namespace.hpp> -#include <boost/contract/ext_/preprocessor/keyword/using.hpp> -#include <boost/contract/ext_/preprocessor/keyword/template.hpp> -#include <boost/contract/ext_/preprocessor/keyword/typedef.hpp> -#include <boost/contract/ext_/preprocessor/keyword/return.hpp> -#include <boost/contract/ext_/preprocessor/keyword/const.hpp> -#include <boost/contract/ext_/preprocessor/keyword/if.hpp> -#include <boost/contract/ext_/preprocessor/keyword/else.hpp> -#include <boost/contract/ext_/preprocessor/paren/has.hpp> -#include <boost/preprocessor/tuple/eat.hpp> -#include <boost/preprocessor/control/iif.hpp> - -/* PUBLIC */ - -// Maximum number of nested assertions that can be parsed (before pp errors). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_LIMIT 64 - -/* PRIVATE */ - -// Expand to 1 if decl = `[template(,,,)] using ...`, otherwise to 0. -// EXPAND for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_USING_FRONT(\ - decl), \ - 1 BOOST_PP_TUPLE_EAT(1) \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TEMPLATE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_TEMPLATE_ \ - , \ - 0 BOOST_PP_TUPLE_EAT(1) \ - ))(decl)) - -// Precondition: decl = `template ...` -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_TEMPLATE_(decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_REMOVE_FRONT(decl)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_TEMPLATE_PAREN_ \ - , \ - 0 BOOST_PP_TUPLE_EAT(1) \ - )(BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_REMOVE_FRONT(decl)) - -// Precondition: decl = `(,,,) ...` -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_TEMPLATE_PAREN_( \ - decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_USING_FRONT( \ - BOOST_PP_TUPLE_EAT(0) decl), 1, 0) - -/* PUBLIC (1) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_1(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_1_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_1_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_1_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_1 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_1_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_1(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_1_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_1_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_1_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_1 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_1_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_1( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_1( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_1( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_1( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_1( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_1\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_1_ \ - )(d, l, decl_traits) - -/* PRIVATE (1) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_1_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_1_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_1_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_1_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_1_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_1_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_1_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_1_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_1_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_1_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_1_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_1_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_1_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_1_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_1_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_1_ \ - )(d, l, decl) - - -/* PUBLIC (2) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_2(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_2_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_2_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_2_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_2 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_2 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_2_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_2(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_2_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_2_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_2_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_2 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_2 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_2_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_2( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_2( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_2( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_2( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_2( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_2\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_2_ \ - )(d, l, decl_traits) - -/* PRIVATE (2) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_2_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_2_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_2_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_2_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_2_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_2_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_2_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_2_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_2_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_2_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_2_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_2_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_2_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_2_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_2_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_2_ \ - )(d, l, decl) - - -/* PUBLIC (3) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_3(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_3_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_3_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_3_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_3 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_3 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_3_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_3(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_3_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_3_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_3_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_3 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_3 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_3_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_3( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_3( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_3( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_3( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_3( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_3\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_3_ \ - )(d, l, decl_traits) - -/* PRIVATE (3) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_3_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_3_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_3_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_3_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_3_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_3_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_3_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_3_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_3_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_3_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_3_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_3_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_3_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_3_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_3_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_3_ \ - )(d, l, decl) - - -/* PUBLIC (4) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_4(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_4_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_4_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_4_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_4 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_4 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_4_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_4(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_4_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_4_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_4_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_4 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_4 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_4_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_4( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_4( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_4( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_4( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_4( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_4\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_4_ \ - )(d, l, decl_traits) - -/* PRIVATE (4) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_4_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_4_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_4_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_4_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_4_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_4_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_4_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_4_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_4_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_4_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_4_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_4_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_4_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_4_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_4_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_4_ \ - )(d, l, decl) - - -/* PUBLIC (5) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_5(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_5_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_5_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_5_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_5 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_5 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_5_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_5(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_5_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_5_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_5_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_5 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_5 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_5_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_5( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_5( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_5( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_5( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_5( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_5\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_5_ \ - )(d, l, decl_traits) - -/* PRIVATE (5) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_5_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_5_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_5_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_5_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_5_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_5_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_5_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_5_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_5_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_5_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_5_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_5_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_5_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_5_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_5_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_5_ \ - )(d, l, decl) - - -/* PUBLIC (6) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_6(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_6_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_6_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_6_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_6 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_6 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_6_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_6(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_6_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_6_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_6_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_6 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_6 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_6_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_6( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_6( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_6( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_6( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_6( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_6\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_6_ \ - )(d, l, decl_traits) - -/* PRIVATE (6) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_6_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_6_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_6_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_6_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_6_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_6_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_6_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_6_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_6_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_6_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_6_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_6_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_6_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_6_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_6_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_6_ \ - )(d, l, decl) - - -/* PUBLIC (7) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_7(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_7_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_7_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_7_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_7 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_7 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_7_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_7(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_7_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_7_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_7_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_7 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_7 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_7_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_7( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_7( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_7( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_7( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_7( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_7\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_7_ \ - )(d, l, decl_traits) - -/* PRIVATE (7) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_7_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_7_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_7_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_7_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_7_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_7_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_7_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_7_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_7_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_7_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_7_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_7_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_7_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_7_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_7_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_7_ \ - )(d, l, decl) - - -/* PUBLIC (8) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_8(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_8_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_8_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_8_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_8 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_8 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_8_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_8(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_8_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_8_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_8_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_8 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_8 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_8_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_8( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_8( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_8( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_8( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_8( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_8\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_8_ \ - )(d, l, decl_traits) - -/* PRIVATE (8) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_8_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_8_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_8_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_8_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_8_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_8_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_8_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_8_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_8_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_8_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_8_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_8_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_8_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_8_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_8_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_8_ \ - )(d, l, decl) - - -/* PUBLIC (9) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_9(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_9_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_9_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_9_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_9 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_9 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_9_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_9(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_9_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_9_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_9_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_9 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_9 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_9_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_9( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_9( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_9( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_9( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_9( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_9\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_9_ \ - )(d, l, decl_traits) - -/* PRIVATE (9) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_9_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_9_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_9_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_9_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_9_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_9_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_9_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_9_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_9_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_9_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_9_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_9_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_9_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_9_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_9_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_9_ \ - )(d, l, decl) - - -/* PUBLIC (10) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_10(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_10_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_10_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_10_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_10 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_10 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_10_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_10(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_10_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_10_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_10_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_10 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_10 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_10_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_10( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_10( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_10( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_10( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_10( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_10\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_10_ \ - )(d, l, decl_traits) - -/* PRIVATE (10) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_10_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_10_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_10_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_10_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_10_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_10_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_10_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_10_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_10_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_10_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_10_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_10_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_10_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_10_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_10_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_10_ \ - )(d, l, decl) - - -/* PUBLIC (11) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_11(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_11_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_11_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_11_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_11 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_11 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_11_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_11(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_11_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_11_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_11_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_11 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_11 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_11_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_11( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_11( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_11( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_11( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_11( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_11\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_11_ \ - )(d, l, decl_traits) - -/* PRIVATE (11) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_11_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_11_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_11_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_11_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_11_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_11_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_11_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_11_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_11_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_11_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_11_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_11_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_11_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_11_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_11_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_11_ \ - )(d, l, decl) - - -/* PUBLIC (12) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_12(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_12_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_12_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_12_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_12 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_12 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_12_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_12(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_12_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_12_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_12_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_12 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_12 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_12_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_12( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_12( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_12( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_12( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_12( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_12\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_12_ \ - )(d, l, decl_traits) - -/* PRIVATE (12) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_12_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_12_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_12_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_12_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_12_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_12_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_12_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_12_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_12_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_12_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_12_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_12_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_12_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_12_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_12_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_12_ \ - )(d, l, decl) - - -/* PUBLIC (13) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_13(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_13_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_13_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_13_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_13 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_13 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_13_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_13(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_13_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_13_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_13_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_13 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_13 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_13_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_13( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_13( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_13( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_13( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_13( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_13\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_13_ \ - )(d, l, decl_traits) - -/* PRIVATE (13) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_13_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_13_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_13_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_13_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_13_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_13_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_13_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_13_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_13_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_13_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_13_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_13_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_13_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_13_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_13_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_13_ \ - )(d, l, decl) - - -/* PUBLIC (14) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_14(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_14_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_14_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_14_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_14 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_14 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_14_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_14(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_14_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_14_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_14_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_14 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_14 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_14_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_14( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_14( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_14( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_14( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_14( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_14\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_14_ \ - )(d, l, decl_traits) - -/* PRIVATE (14) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_14_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_14_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_14_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_14_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_14_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_14_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_14_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_14_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_14_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_14_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_14_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_14_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_14_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_14_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_14_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_14_ \ - )(d, l, decl) - - -/* PUBLIC (15) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_15(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_15_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_15_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_15_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_15 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_15 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_15_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_15(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_15_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_15_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_15_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_15 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_15 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_15_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_15( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_15( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_15( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_15( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_15( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_15\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_15_ \ - )(d, l, decl_traits) - -/* PRIVATE (15) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_15_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_15_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_15_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_15_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_15_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_15_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_15_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_15_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_15_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_15_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_15_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_15_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_15_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_15_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_15_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_15_ \ - )(d, l, decl) - - -/* PUBLIC (16) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_16(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_16_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_16_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_16_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_16 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_16 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_16_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_16(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_16_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_16_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_16_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_16 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_16 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_16_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_16( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_16( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_16( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_16( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_16( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_16\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_16_ \ - )(d, l, decl_traits) - -/* PRIVATE (16) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_16_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_16_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_16_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_16_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_16_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_16_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_16_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_16_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_16_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_16_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_16_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_16_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_16_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_16_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_16_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_16_ \ - )(d, l, decl) - - -/* PUBLIC (17) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_17(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_17_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_17_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_17_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_17 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_17 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_17_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_17(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_17_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_17_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_17_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_17 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_17 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_17_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_17( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_17( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_17( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_17( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_17( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_17\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_17_ \ - )(d, l, decl_traits) - -/* PRIVATE (17) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_17_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_17_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_17_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_17_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_17_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_17_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_17_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_17_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_17_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_17_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_17_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_17_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_17_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_17_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_17_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_17_ \ - )(d, l, decl) - - -/* PUBLIC (18) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_18(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_18_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_18_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_18_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_18 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_18 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_18_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_18(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_18_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_18_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_18_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_18 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_18 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_18_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_18( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_18( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_18( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_18( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_18( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_18\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_18_ \ - )(d, l, decl_traits) - -/* PRIVATE (18) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_18_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_18_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_18_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_18_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_18_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_18_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_18_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_18_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_18_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_18_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_18_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_18_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_18_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_18_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_18_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_18_ \ - )(d, l, decl) - - -/* PUBLIC (19) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_19(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_19_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_19_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_19_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_19 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_19 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_19_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_19(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_19_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_19_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_19_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_19 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_19 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_19_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_19( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_19( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_19( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_19( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_19( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_19\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_19_ \ - )(d, l, decl_traits) - -/* PRIVATE (19) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_19_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_19_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_19_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_19_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_19_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_19_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_19_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_19_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_19_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_19_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_19_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_19_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_19_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_19_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_19_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_19_ \ - )(d, l, decl) - - -/* PUBLIC (20) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_20(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_20_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_20_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_20_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_20 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_20 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_20_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_20(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_20_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_20_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_20_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_20 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_20 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_20_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_20( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_20( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_20( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_20( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_20( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_20\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_20_ \ - )(d, l, decl_traits) - -/* PRIVATE (20) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_20_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_20_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_20_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_20_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_20_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_20_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_20_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_20_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_20_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_20_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_20_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_20_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_20_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_20_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_20_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_20_ \ - )(d, l, decl) - - -/* PUBLIC (21) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_21(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_21_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_21_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_21_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_21 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_21 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_21_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_21(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_21_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_21_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_21_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_21 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_21 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_21_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_21( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_21( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_21( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_21( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_21( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_21\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_21_ \ - )(d, l, decl_traits) - -/* PRIVATE (21) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_21_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_21_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_21_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_21_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_21_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_21_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_21_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_21_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_21_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_21_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_21_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_21_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_21_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_21_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_21_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_21_ \ - )(d, l, decl) - - -/* PUBLIC (22) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_22(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_22_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_22_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_22_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_22 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_22 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_22_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_22(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_22_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_22_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_22_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_22 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_22 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_22_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_22( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_22( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_22( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_22( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_22( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_22\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_22_ \ - )(d, l, decl_traits) - -/* PRIVATE (22) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_22_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_22_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_22_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_22_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_22_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_22_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_22_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_22_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_22_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_22_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_22_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_22_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_22_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_22_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_22_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_22_ \ - )(d, l, decl) - - -/* PUBLIC (23) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_23(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_23_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_23_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_23_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_23 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_23 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_23_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_23(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_23_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_23_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_23_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_23 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_23 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_23_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_23( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_23( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_23( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_23( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_23( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_23\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_23_ \ - )(d, l, decl_traits) - -/* PRIVATE (23) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_23_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_23_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_23_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_23_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_23_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_23_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_23_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_23_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_23_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_23_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_23_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_23_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_23_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_23_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_23_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_23_ \ - )(d, l, decl) - - -/* PUBLIC (24) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_24(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_24_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_24_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_24_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_24 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_24 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_24_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_24(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_24_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_24_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_24_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_24 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_24 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_24_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_24( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_24( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_24( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_24( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_24( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_24\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_24_ \ - )(d, l, decl_traits) - -/* PRIVATE (24) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_24_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_24_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_24_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_24_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_24_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_24_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_24_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_24_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_24_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_24_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_24_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_24_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_24_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_24_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_24_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_24_ \ - )(d, l, decl) - - -/* PUBLIC (25) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_25(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_25_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_25_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_25_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_25 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_25 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_25_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_25(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_25_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_25_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_25_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_25 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_25 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_25_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_25( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_25( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_25( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_25( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_25( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_25\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_25_ \ - )(d, l, decl_traits) - -/* PRIVATE (25) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_25_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_25_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_25_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_25_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_25_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_25_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_25_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_25_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_25_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_25_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_25_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_25_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_25_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_25_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_25_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_25_ \ - )(d, l, decl) - - -/* PUBLIC (26) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_26(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_26_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_26_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_26_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_26 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_26 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_26_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_26(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_26_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_26_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_26_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_26 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_26 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_26_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_26( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_26( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_26( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_26( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_26( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_26\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_26_ \ - )(d, l, decl_traits) - -/* PRIVATE (26) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_26_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_26_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_26_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_26_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_26_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_26_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_26_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_26_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_26_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_26_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_26_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_26_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_26_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_26_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_26_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_26_ \ - )(d, l, decl) - - -/* PUBLIC (27) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_27(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_27_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_27_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_27_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_27 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_27 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_27_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_27(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_27_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_27_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_27_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_27 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_27 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_27_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_27( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_27( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_27( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_27( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_27( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_27\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_27_ \ - )(d, l, decl_traits) - -/* PRIVATE (27) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_27_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_27_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_27_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_27_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_27_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_27_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_27_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_27_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_27_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_27_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_27_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_27_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_27_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_27_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_27_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_27_ \ - )(d, l, decl) - - -/* PUBLIC (28) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_28(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_28_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_28_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_28_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_28 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_28 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_28_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_28(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_28_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_28_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_28_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_28 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_28 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_28_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_28( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_28( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_28( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_28( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_28( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_28\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_28_ \ - )(d, l, decl_traits) - -/* PRIVATE (28) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_28_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_28_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_28_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_28_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_28_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_28_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_28_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_28_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_28_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_28_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_28_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_28_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_28_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_28_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_28_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_28_ \ - )(d, l, decl) - - -/* PUBLIC (29) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_29(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_29_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_29_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_29_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_29 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_29 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_29_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_29(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_29_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_29_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_29_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_29 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_29 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_29_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_29( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_29( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_29( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_29( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_29( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_29\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_29_ \ - )(d, l, decl_traits) - -/* PRIVATE (29) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_29_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_29_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_29_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_29_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_29_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_29_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_29_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_29_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_29_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_29_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_29_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_29_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_29_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_29_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_29_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_29_ \ - )(d, l, decl) - - -/* PUBLIC (30) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_30(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_30_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_30_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_30_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_30 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_30 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_30_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_30(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_30_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_30_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_30_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_30 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_30 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_30_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_30( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_30( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_30( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_30( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_30( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_30\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_30_ \ - )(d, l, decl_traits) - -/* PRIVATE (30) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_30_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_30_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_30_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_30_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_30_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_30_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_30_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_30_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_30_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_30_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_30_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_30_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_30_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_30_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_30_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_30_ \ - )(d, l, decl) - - -/* PUBLIC (31) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_31(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_31_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_31_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_31_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_31 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_31 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_31_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_31(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_31_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_31_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_31_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_31 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_31 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_31_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_31( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_31( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_31( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_31( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_31( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_31\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_31_ \ - )(d, l, decl_traits) - -/* PRIVATE (31) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_31_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_31_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_31_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_31_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_31_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_31_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_31_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_31_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_31_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_31_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_31_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_31_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_31_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_31_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_31_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_31_ \ - )(d, l, decl) - - -/* PUBLIC (32) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_32(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_32_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_32_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_32_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_32 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_32 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_32_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_32(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_32_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_32_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_32_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_32 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_32 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_32_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_32( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_32( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_32( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_32( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_32( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_32\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_32_ \ - )(d, l, decl_traits) - -/* PRIVATE (32) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_32_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_32_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_32_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_32_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_32_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_32_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_32_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_32_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_32_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_32_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_32_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_32_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_32_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_32_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_32_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_32_ \ - )(d, l, decl) - - -/* PUBLIC (33) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_33(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_33_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_33_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_33_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_33 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_33 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_33_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_33(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_33_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_33_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_33_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_33 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_33 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_33_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_33( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_33( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_33( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_33( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_33( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_33\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_33_ \ - )(d, l, decl_traits) - -/* PRIVATE (33) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_33_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_33_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_33_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_33_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_33_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_33_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_33_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_33_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_33_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_33_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_33_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_33_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_33_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_33_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_33_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_33_ \ - )(d, l, decl) - - -/* PUBLIC (34) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_34(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_34_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_34_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_34_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_34 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_34 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_34_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_34(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_34_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_34_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_34_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_34 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_34 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_34_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_34( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_34( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_34( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_34( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_34( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_34\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_34_ \ - )(d, l, decl_traits) - -/* PRIVATE (34) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_34_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_34_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_34_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_34_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_34_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_34_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_34_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_34_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_34_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_34_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_34_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_34_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_34_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_34_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_34_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_34_ \ - )(d, l, decl) - - -/* PUBLIC (35) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_35(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_35_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_35_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_35_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_35 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_35 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_35_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_35(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_35_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_35_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_35_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_35 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_35 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_35_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_35( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_35( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_35( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_35( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_35( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_35\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_35_ \ - )(d, l, decl_traits) - -/* PRIVATE (35) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_35_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_35_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_35_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_35_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_35_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_35_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_35_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_35_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_35_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_35_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_35_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_35_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_35_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_35_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_35_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_35_ \ - )(d, l, decl) - - -/* PUBLIC (36) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_36(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_36_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_36_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_36_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_36 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_36 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_36_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_36(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_36_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_36_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_36_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_36 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_36 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_36_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_36( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_36( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_36( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_36( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_36( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_36\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_36_ \ - )(d, l, decl_traits) - -/* PRIVATE (36) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_36_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_36_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_36_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_36_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_36_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_36_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_36_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_36_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_36_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_36_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_36_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_36_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_36_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_36_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_36_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_36_ \ - )(d, l, decl) - - -/* PUBLIC (37) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_37(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_37_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_37_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_37_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_37 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_37 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_37_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_37(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_37_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_37_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_37_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_37 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_37 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_37_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_37( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_37( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_37( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_37( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_37( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_37\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_37_ \ - )(d, l, decl_traits) - -/* PRIVATE (37) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_37_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_37_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_37_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_37_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_37_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_37_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_37_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_37_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_37_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_37_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_37_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_37_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_37_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_37_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_37_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_37_ \ - )(d, l, decl) - - -/* PUBLIC (38) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_38(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_38_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_38_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_38_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_38 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_38 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_38_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_38(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_38_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_38_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_38_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_38 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_38 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_38_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_38( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_38( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_38( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_38( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_38( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_38\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_38_ \ - )(d, l, decl_traits) - -/* PRIVATE (38) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_38_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_38_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_38_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_38_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_38_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_38_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_38_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_38_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_38_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_38_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_38_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_38_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_38_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_38_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_38_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_38_ \ - )(d, l, decl) - - -/* PUBLIC (39) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_39(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_39_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_39_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_39_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_39 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_39 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_39_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_39(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_39_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_39_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_39_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_39 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_39 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_39_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_39( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_39( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_39( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_39( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_39( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_39\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_39_ \ - )(d, l, decl_traits) - -/* PRIVATE (39) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_39_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_39_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_39_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_39_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_39_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_39_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_39_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_39_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_39_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_39_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_39_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_39_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_39_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_39_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_39_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_39_ \ - )(d, l, decl) - - -/* PUBLIC (40) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_40(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_40_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_40_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_40_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_40 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_40 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_40_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_40(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_40_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_40_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_40_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_40 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_40 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_40_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_40( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_40( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_40( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_40( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_40( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_40\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_40_ \ - )(d, l, decl_traits) - -/* PRIVATE (40) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_40_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_40_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_40_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_40_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_40_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_40_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_40_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_40_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_40_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_40_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_40_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_40_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_40_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_40_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_40_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_40_ \ - )(d, l, decl) - - -/* PUBLIC (41) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_41(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_41_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_41_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_41_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_41 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_41 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_41_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_41(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_41_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_41_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_41_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_41 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_41 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_41_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_41( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_41( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_41( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_41( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_41( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_41\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_41_ \ - )(d, l, decl_traits) - -/* PRIVATE (41) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_41_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_41_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_41_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_41_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_41_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_41_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_41_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_41_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_41_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_41_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_41_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_41_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_41_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_41_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_41_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_41_ \ - )(d, l, decl) - - -/* PUBLIC (42) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_42(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_42_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_42_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_42_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_42 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_42 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_42_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_42(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_42_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_42_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_42_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_42 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_42 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_42_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_42( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_42( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_42( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_42( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_42( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_42\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_42_ \ - )(d, l, decl_traits) - -/* PRIVATE (42) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_42_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_42_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_42_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_42_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_42_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_42_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_42_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_42_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_42_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_42_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_42_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_42_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_42_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_42_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_42_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_42_ \ - )(d, l, decl) - - -/* PUBLIC (43) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_43(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_43_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_43_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_43_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_43 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_43 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_43_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_43(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_43_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_43_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_43_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_43 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_43 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_43_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_43( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_43( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_43( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_43( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_43( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_43\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_43_ \ - )(d, l, decl_traits) - -/* PRIVATE (43) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_43_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_43_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_43_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_43_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_43_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_43_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_43_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_43_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_43_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_43_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_43_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_43_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_43_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_43_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_43_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_43_ \ - )(d, l, decl) - - -/* PUBLIC (44) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_44(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_44_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_44_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_44_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_44 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_44 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_44_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_44(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_44_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_44_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_44_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_44 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_44 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_44_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_44( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_44( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_44( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_44( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_44( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_44\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_44_ \ - )(d, l, decl_traits) - -/* PRIVATE (44) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_44_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_44_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_44_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_44_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_44_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_44_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_44_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_44_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_44_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_44_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_44_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_44_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_44_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_44_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_44_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_44_ \ - )(d, l, decl) - - -/* PUBLIC (45) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_45(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_45_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_45_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_45_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_45 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_45 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_45_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_45(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_45_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_45_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_45_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_45 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_45 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_45_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_45( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_45( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_45( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_45( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_45( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_45\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_45_ \ - )(d, l, decl_traits) - -/* PRIVATE (45) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_45_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_45_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_45_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_45_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_45_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_45_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_45_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_45_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_45_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_45_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_45_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_45_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_45_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_45_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_45_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_45_ \ - )(d, l, decl) - - -/* PUBLIC (46) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_46(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_46_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_46_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_46_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_46 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_46 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_46_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_46(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_46_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_46_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_46_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_46 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_46 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_46_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_46( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_46( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_46( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_46( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_46( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_46\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_46_ \ - )(d, l, decl_traits) - -/* PRIVATE (46) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_46_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_46_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_46_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_46_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_46_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_46_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_46_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_46_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_46_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_46_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_46_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_46_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_46_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_46_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_46_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_46_ \ - )(d, l, decl) - - -/* PUBLIC (47) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_47(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_47_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_47_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_47_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_47 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_47 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_47_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_47(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_47_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_47_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_47_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_47 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_47 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_47_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_47( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_47( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_47( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_47( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_47( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_47\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_47_ \ - )(d, l, decl_traits) - -/* PRIVATE (47) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_47_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_47_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_47_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_47_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_47_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_47_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_47_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_47_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_47_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_47_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_47_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_47_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_47_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_47_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_47_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_47_ \ - )(d, l, decl) - - -/* PUBLIC (48) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_48(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_48_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_48_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_48_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_48 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_48 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_48_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_48(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_48_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_48_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_48_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_48 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_48 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_48_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_48( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_48( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_48( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_48( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_48( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_48\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_48_ \ - )(d, l, decl_traits) - -/* PRIVATE (48) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_48_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_48_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_48_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_48_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_48_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_48_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_48_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_48_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_48_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_48_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_48_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_48_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_48_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_48_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_48_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_48_ \ - )(d, l, decl) - - -/* PUBLIC (49) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_49(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_49_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_49_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_49_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_49 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_49 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_49_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_49(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_49_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_49_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_49_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_49 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_49 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_49_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_49( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_49( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_49( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_49( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_49( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_49\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_49_ \ - )(d, l, decl_traits) - -/* PRIVATE (49) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_49_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_49_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_49_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_49_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_49_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_49_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_49_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_49_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_49_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_49_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_49_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_49_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_49_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_49_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_49_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_49_ \ - )(d, l, decl) - - -/* PUBLIC (50) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_50(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_50_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_50_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_50_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_50 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_50 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_50_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_50(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_50_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_50_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_50_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_50 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_50 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_50_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_50( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_50( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_50( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_50( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_50( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_50\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_50_ \ - )(d, l, decl_traits) - -/* PRIVATE (50) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_50_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_50_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_50_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_50_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_50_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_50_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_50_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_50_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_50_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_50_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_50_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_50_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_50_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_50_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_50_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_50_ \ - )(d, l, decl) - - -/* PUBLIC (51) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_51(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_51_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_51_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_51_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_51 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_51 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_51_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_51(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_51_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_51_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_51_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_51 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_51 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_51_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_51( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_51( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_51( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_51( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_51( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_51\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_51_ \ - )(d, l, decl_traits) - -/* PRIVATE (51) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_51_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_51_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_51_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_51_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_51_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_51_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_51_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_51_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_51_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_51_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_51_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_51_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_51_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_51_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_51_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_51_ \ - )(d, l, decl) - - -/* PUBLIC (52) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_52(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_52_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_52_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_52_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_52 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_52 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_52_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_52(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_52_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_52_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_52_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_52 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_52 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_52_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_52( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_52( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_52( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_52( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_52( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_52\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_52_ \ - )(d, l, decl_traits) - -/* PRIVATE (52) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_52_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_52_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_52_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_52_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_52_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_52_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_52_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_52_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_52_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_52_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_52_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_52_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_52_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_52_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_52_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_52_ \ - )(d, l, decl) - - -/* PUBLIC (53) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_53(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_53_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_53_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_53_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_53 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_53 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_53_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_53(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_53_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_53_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_53_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_53 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_53 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_53_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_53( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_53( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_53( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_53( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_53( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_53\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_53_ \ - )(d, l, decl_traits) - -/* PRIVATE (53) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_53_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_53_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_53_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_53_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_53_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_53_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_53_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_53_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_53_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_53_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_53_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_53_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_53_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_53_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_53_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_53_ \ - )(d, l, decl) - - -/* PUBLIC (54) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_54(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_54_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_54_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_54_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_54 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_54 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_54_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_54(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_54_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_54_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_54_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_54 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_54 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_54_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_54( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_54( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_54( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_54( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_54( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_54\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_54_ \ - )(d, l, decl_traits) - -/* PRIVATE (54) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_54_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_54_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_54_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_54_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_54_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_54_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_54_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_54_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_54_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_54_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_54_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_54_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_54_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_54_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_54_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_54_ \ - )(d, l, decl) - - -/* PUBLIC (55) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_55(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_55_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_55_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_55_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_55 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_55 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_55_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_55(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_55_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_55_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_55_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_55 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_55 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_55_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_55( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_55( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_55( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_55( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_55( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_55\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_55_ \ - )(d, l, decl_traits) - -/* PRIVATE (55) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_55_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_55_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_55_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_55_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_55_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_55_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_55_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_55_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_55_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_55_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_55_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_55_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_55_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_55_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_55_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_55_ \ - )(d, l, decl) - - -/* PUBLIC (56) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_56(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_56_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_56_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_56_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_56 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_56 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_56_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_56(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_56_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_56_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_56_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_56 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_56 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_56_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_56( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_56( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_56( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_56( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_56( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_56\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_56_ \ - )(d, l, decl_traits) - -/* PRIVATE (56) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_56_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_56_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_56_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_56_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_56_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_56_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_56_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_56_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_56_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_56_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_56_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_56_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_56_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_56_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_56_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_56_ \ - )(d, l, decl) - - -/* PUBLIC (57) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_57(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_57_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_57_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_57_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_57 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_57 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_57_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_57(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_57_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_57_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_57_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_57 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_57 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_57_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_57( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_57( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_57( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_57( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_57( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_57\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_57_ \ - )(d, l, decl_traits) - -/* PRIVATE (57) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_57_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_57_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_57_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_57_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_57_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_57_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_57_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_57_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_57_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_57_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_57_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_57_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_57_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_57_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_57_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_57_ \ - )(d, l, decl) - - -/* PUBLIC (58) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_58(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_58_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_58_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_58_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_58 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_58 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_58_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_58(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_58_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_58_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_58_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_58 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_58 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_58_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_58( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_58( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_58( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_58( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_58( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_58\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_58_ \ - )(d, l, decl_traits) - -/* PRIVATE (58) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_58_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_58_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_58_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_58_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_58_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_58_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_58_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_58_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_58_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_58_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_58_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_58_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_58_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_58_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_58_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_58_ \ - )(d, l, decl) - - -/* PUBLIC (59) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_59(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_59_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_59_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_59_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_59 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_59 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_59_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_59(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_59_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_59_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_59_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_59 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_59 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_59_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_59( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_59( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_59( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_59( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_59( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_59\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_59_ \ - )(d, l, decl_traits) - -/* PRIVATE (59) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_59_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_59_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_59_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_59_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_59_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_59_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_59_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_59_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_59_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_59_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_59_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_59_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_59_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_59_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_59_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_59_ \ - )(d, l, decl) - - -/* PUBLIC (60) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_60(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_60_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_60_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_60_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_60 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_60 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_60_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_60(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_60_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_60_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_60_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_60 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_60 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_60_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_60( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_60( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_60( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_60( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_60( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_60\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_60_ \ - )(d, l, decl_traits) - -/* PRIVATE (60) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_60_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_60_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_60_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_60_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_60_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_60_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_60_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_60_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_60_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_60_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_60_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_60_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_60_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_60_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_60_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_60_ \ - )(d, l, decl) - - -/* PUBLIC (61) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_61(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_61_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_61_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_61_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_61 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_61 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_61_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_61(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_61_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_61_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_61_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_61 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_61 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_61_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_61( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_61( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_61( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_61( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_61( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_61\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_61_ \ - )(d, l, decl_traits) - -/* PRIVATE (61) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_61_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_61_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_61_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_61_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_61_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_61_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_61_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_61_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_61_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_61_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_61_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_61_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_61_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_61_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_61_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_61_ \ - )(d, l, decl) - - -/* PUBLIC (62) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_62(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_62_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_62_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_62_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_62 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_62 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_62_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_62(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_62_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_62_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_62_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_62 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_62 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_62_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_62( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_62( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_62( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_62( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_62( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_62\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_62_ \ - )(d, l, decl_traits) - -/* PRIVATE (62) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_62_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_62_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_62_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_62_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_62_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_62_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_62_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_62_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_62_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_62_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_62_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_62_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_62_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_62_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_62_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_62_ \ - )(d, l, decl) - - -/* PUBLIC (63) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_63(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_63_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_63_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_63_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_63 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_63 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_63_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_63(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_63_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_63_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_63_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_63 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_63 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_63_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_63( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_63( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_63( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_63( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_63( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_63\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_63_ \ - )(d, l, decl_traits) - -/* PRIVATE (63) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_63_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_63_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_63_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_63_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_63_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_63_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_63_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_63_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_63_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_63_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_63_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_63_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_63_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_63_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_63_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_63_ \ - )(d, l, decl) - - -/* PUBLIC (64) */ - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_64(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_64_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_64_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_64_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_64 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_64 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_64_ \ - ))))))(d, l, decl) - -// Implementation: EXPAND needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_64(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_64_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_USING_(decl),\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_64_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPEDEF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_64_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_64 \ - , BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(decl)), \ - BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_64 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_64_ \ - ))))))(d, l, decl) - -// Implementation: Else statements are first parsed and then replaced when -// parsed as empty and they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_64( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , \ - 0 \ - )) - -// Implementation: old-of assertions are first parsed as boolean assertions and -// then replaced as old-of assertions by the overall assertions parsing alg. -// Else statements are first parsed and then replaced when parsed as empty and -// they appear after a comma following if statements. -// EXPAND and IIF (instead of BITOR, etc.) for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_64( \ - d, l, decl) \ - BOOST_PP_EXPAND(BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - decl), \ - 1 \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(decl), \ - 1 \ - , \ - 0 \ - ))) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_64( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_64( \ - d, l, decl_traits) - -// Implementation: Same ELSE macro below used by both if and static-if. -#define BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_64( \ - d, l, decl_traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_64\ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_64_ \ - )(d, l, decl_traits) - -/* PRIVATE (64) */ - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_OLDOF_PARSE_D_L_64_( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D(d, decl_traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_NAMESPACE_PARSE_64_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_USING_PARSE_64_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_TYPEDEF_PARSE_64_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_64_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_64_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -// This is needed because it has to eventually use IS_RETURN_BACK which does -// not allow decl to end with parenthesis `... (...)` (so type is first parsed -// to make sure this is a valid return assertion with a type (possibly auto), -// a not-nil assignment, etc.). Only after that, IS_RETURN_BACK is safely used. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_64_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_64_(d, l, \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D( \ - d, decl BOOST_PP_NIL) \ - ) - -// decl = `auto-type something-but-not-paren ...` is passed to RETURN_MAYBE. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_CHECK_64_( \ - d, l, decl, decl_type) \ - BOOST_PP_IIF(BOOST_PP_EXPAND( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)), \ - 0 \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) \ - ) , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_64_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_64_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_64_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_64_ \ - )))(d, l, decl) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_HANDLE_RETURN_MAYBE_64_( \ - d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_BACK(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_RETURN_PARSE_64_ \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_BOOL_PARSE_64_ \ - )(d, l, decl) - - -#endif // #include guard diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/bool.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/bool.hpp deleted file mode 100644 index ee55b2a..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion/bool.hpp +++ /dev/null @@ -1,23 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_HPP_ -#define BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/assertion/bool/expr.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/key.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> - -/* PUBLIC */ - -// ASSERTION_TRAITS_KEY(traits) expands to `bool` for this assertion. - -// Precondition: decl = `...` (includes `(,,,)`, `bool(,,,)`, etc.). -#define BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_EXPR_PARSE( \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE(bool, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/bool/expr.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/bool/expr.hpp deleted file mode 100644 index f8b39cf..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion/bool/expr.hpp +++ /dev/null @@ -1,35 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_EXPR_HPP_ -#define BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_EXPR_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/utility/nil.hpp> -#include <boost/preprocessor/facilities/expand.hpp> - -/* PUBLIC */ - -// Expand to `...` (tokens). -#define BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_EXPR(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_BOOL_ASSERTION_EXPR, traits) - -#define BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_EXPR_PARSE(decl_traits) \ - BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_EXPR_PARSE_ARGS_ \ - decl_traits \ - ) - -/* PRIVATE */ - -// Precondition: decl = `... NIL`. -#define BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_EXPR_PARSE_ARGS_( \ - decl, traits) \ - ( \ - BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/const.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/const.hpp deleted file mode 100644 index f457957..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion/const.hpp +++ /dev/null @@ -1,25 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_HPP_ -#define BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/assertion/const/expr.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/const/captures.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/key.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> - -/* PUBLIC */ - -// ASSERTION_TRAITS_KEY(traits) expands to `const` for this assertion. - -// Precondition: decl = `const( [[(wrapped-type)] name, ...] ) expr`. -#define BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_EXPR_PARSE( \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_CAPTURES_PARSE_D_L(d, l, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE(const, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - ))))) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/const/captures.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/const/captures.hpp deleted file mode 100644 index f0128ac..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion/const/captures.hpp +++ /dev/null @@ -1,63 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_CAPTURES_HPP_ -#define BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_CAPTURES_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/list.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/traits/capture.hpp> -#include <boost/contract/ext_/preprocessor/keyword/const.hpp> -#include <boost/contract/ext_/preprocessor/paren/front.hpp> -#include <boost/preprocessor/tuple/elem.hpp> -#include <boost/preprocessor/tuple/eat.hpp> - -/* PUBLIC */ - -// Expand to `pp-seq | EMPTY()`, pp-seq of capture traits to be inspected via -// PP_CAPTURE_TRAITS macros. -#define BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_CAPTURES(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CONST_ASSERTION_CAPTURES, \ - traits \ - )() - -#define BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_CAPTURES_PARSE_D_L( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_CAPTURES_PARSE_ARGS_(d, l, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE */ - -// Precondition: decl = `const( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_CAPTURES_PARSE_ARGS_( \ - d, l, decl, traits) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_CAPTURES_(d, l, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_REMOVE_FRONT(decl), \ - traits \ - ) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_CAPTURES_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARAMS_EXPAND_TRAITS_(\ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_ ## l(d , \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CAPTURE_TRAITS_PARSE_D_L \ - ) \ - ) \ - ) \ - ) - -// Extra macro invocation needed for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARAMS_EXPAND_TRAITS_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -#endif // #include gaurd - diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/const/expr.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/const/expr.hpp deleted file mode 100644 index c4ca8a3..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion/const/expr.hpp +++ /dev/null @@ -1,35 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_EXPR_HPP_ -#define BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_EXPR_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/utility/nil.hpp> -#include <boost/preprocessor/facilities/expand.hpp> - -/* PUBLIC */ - -// Expand to `expr` (expr might or not be in parenthesis, like all bool expr). -#define BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_EXPR(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CONST_ASSERTION_EXPR, traits) - -#define BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_EXPR_PARSE(decl_traits) \ - BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_EXPR_PARSE_ARGS_ \ - decl_traits \ - ) - -/* PRIVATE */ - -// Precondition: decl = `... NIL`. -#define BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_EXPR_PARSE_ARGS_( \ - decl, traits) \ - ( \ - BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/if-generate.py b/include/boost/contract/ext_/preprocessor/traits/assertion/if-generate.py deleted file mode 100644 index a8962d9..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion/if-generate.py +++ /dev/null @@ -1,322 +0,0 @@ - -import os -import sys - -LIMIT = 64 - -def code(): - result = '' - for n in range(1, LIMIT + 1): - result = result + ''' -/* PUBLIC ({0}) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_{0}(d, l, decl) \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_{0}_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_{0}( \\ - d, l, decl) \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_{0}_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_{0}( \\ - d, l, decl) \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_{0}_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_{0}( \\ - d, l, decl) \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_{0}_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_{0}(\\ - d, l, decl_traits) \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_{0}_( \\ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \\ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_{0}( \\ - d, l, decl_traits) \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_{0}_( \\ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_{0}( \\ - d, l, is_static, decl_traits) \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_{0}_(d, l, is_static, \\ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \\ - BOOST_PP_IIF(is_static, \\ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \\ - , \\ - BOOST_PP_TUPLE_REM(1) \\ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \\ - ), \\ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \\ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_{0}( \\ - d, l, is_post, decl_traits) \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_{0}_(d, l, is_post, \\ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \\ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \\ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_{0}( \\ - d, l, is_post, decl_traits) \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_{0}_(d, l, is_post, \\ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \\ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \\ - ) - -/* PRIVATE ({0}) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_{0}_( \\ - d, l, is_post, is_static, decl) \\ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_{0}( \\ - d, l, is_post, \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_{0}( \\ - d, l, is_post, \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_{0}( \\ - d, l, is_static, \\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \\ - BOOST_PP_EXPR_IIF(is_static, static) if, \\ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \\ - decl BOOST_PP_NIL \\ - )))))) - -#define \\ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_{0}_( \\ - d, l, is_post, decl_traits) \\ - BOOST_PP_IIF( \\ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \\ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \\ - ) \\ - ) \\ - , \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_{0}_\\ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_{0}_ \\ - )(d, l, is_post, decl_traits) - -#define \\ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_{0}_( \\ - d, l, is_post, decl_traits) \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_{0}_(d, l, is_post, \\ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \\ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \\ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \\ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_{0}_(\\ - d, l, is_post, decl_traits) \\ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \\ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_{0}_( \\ - d, l, is_static, decl, traits) \\ - ( \\ - BOOST_PP_TUPLE_EAT(0) decl, \\ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \\ - traits, \\ - BOOST_PP_TUPLE_ELEM(2, 1, \\ - BOOST_PP_IIF(is_static, \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_{0}_ \\ - , \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_{0}_ \\ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \\ - ) \\ - ) \\ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_{0}_(d, l, decl) \\ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \\ - BOOST_PP_TUPLE_ELEM(0, decl)), \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_{0}_ \\ - , \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_{0}_ \\ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_{0}_(d, l, decl) \\ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \\ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_{0}_(d, l, decl) \\ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_{0}_( \\ - d, l, is_post, decl, traits) \\ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_{0}_ \\ - , \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_{0}_ \\ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_{0}_( \\ - d, l, is_post, decl, traits) \\ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_{0}_ \\ - , \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_{0}_ \\ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_{0}_( \\ - d, l, is_post, decl, traits) \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_{0}_(d, l, is_post, \\ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_{0}_( \\ - d, l, is_post, decl, traits) \\ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_{0}_ \\ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_{0}_ \\ - , \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_{0}_ \\ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_{0}_( \\ - d, l, is_post, decl, traits) \\ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_{0}_( \\ - d, l, is_post, decl, traits) \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_{0}_(d, l, \\ - BOOST_PP_IIF(is_post, \\ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_{1} \\ - , \\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_{1} \\ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \\ - traits \\ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_{0}_( \\ - d, l, decl_assertion, traits) \\ - ( \\ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \\ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \\ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \\ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_{0}_( \\ - d, l, is_post, decl, traits) \\ - BOOST_PP_IIF(is_post, \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_{0}_ \\ - , \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_{0}_ \\ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_{0}_( \\ - d, l, decl, traits) \\ - ( \\ - BOOST_PP_TUPLE_EAT(0) decl, \\ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \\ - traits, \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_{0}_( \\ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \\ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \\ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_{1}, \\ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_{1}, \\ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_{1} \\ - ) \\ - ) \\ - ) \\ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_{0}_( \\ - d, l, decl, traits) \\ - ( \\ - BOOST_PP_TUPLE_EAT(0) decl, \\ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \\ - traits, \\ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_{0}_( \\ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \\ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_{1}, \\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_{1}, \\ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_{1} \\ - ) \\ - ) \\ - ) \\ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_{0}_( \\ - decl_traits) \\ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) -'''.format(n, n + 1) - return result - -script = os.path.basename(sys.argv[0]) -path = sys.argv[0].replace('-generate.py', '', 1) + ".hpp" -file = open(path, 'w') - -file.write(''' -#ifndef BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_HPP_ -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "{0}". - -#include <boost/contract/ext_/preprocessor/traits/assertion/if/cond.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/if/thens.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/if/elses.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/list.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/if.hpp> -#include <boost/contract/ext_/preprocessor/keyword/else.hpp> -#include <boost/contract/ext_/preprocessor/keyword/static.hpp> -#include <boost/contract/ext_/preprocessor/paren/front.hpp> -#include <boost/contract/ext_/preprocessor/utility/empty.hpp> -#include <boost/contract/ext_/preprocessor/utility/nil.hpp> -#include <boost/preprocessor/tuple/eat.hpp> -#include <boost/preprocessor/tuple/rem.hpp> -#include <boost/preprocessor/tuple/elem.hpp> -#include <boost/preprocessor/control/expr_iif.hpp> -#include <boost/preprocessor/control/iif.hpp> - -/* PUBLIC */ - -// NOTE: This same file provides APIs to parse both if-assertion and -// static-if-assertion traits (because the code re-uses same implementation -// macros and because the traits inspection public macros are the same). - -// Maximum number of nested if and static-if assertions that can be parsed -// (before pp errors). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_LIMIT {1} - -// ASSERTION_TRAITS_KEY(traits) expands to `if` for if-assertion and to -// `static if` for static-if-assertion (this can be checked in "one step" using -// the ..._STATIC_IF_..._IS macro below). - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(tokens) \\ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STATIC_FRONT(tokens), \\ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS_ \\ - , \\ - 0 BOOST_PP_TUPLE_EAT(1) \\ - )(tokens) - -/* PRIVATE */ - -// Precondition: tokens = `static ...`. -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS_(tokens) \\ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT( \\ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT( \\ - tokens BOOST_PP_NIL \\ - ) \\ - ) -{2} -#endif // #include guard - -'''.format(script, LIMIT, code())) - -file.close() -print "Written:", path - diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/if.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/if.hpp deleted file mode 100644 index 2c7901b..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion/if.hpp +++ /dev/null @@ -1,15609 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_HPP_ -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "if-generate.py". - -#include <boost/contract/ext_/preprocessor/traits/assertion/if/cond.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/if/thens.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/if/elses.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/list.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/if.hpp> -#include <boost/contract/ext_/preprocessor/keyword/else.hpp> -#include <boost/contract/ext_/preprocessor/keyword/static.hpp> -#include <boost/contract/ext_/preprocessor/paren/front.hpp> -#include <boost/contract/ext_/preprocessor/utility/empty.hpp> -#include <boost/contract/ext_/preprocessor/utility/nil.hpp> -#include <boost/preprocessor/tuple/eat.hpp> -#include <boost/preprocessor/tuple/rem.hpp> -#include <boost/preprocessor/tuple/elem.hpp> -#include <boost/preprocessor/control/expr_iif.hpp> -#include <boost/preprocessor/control/iif.hpp> - -/* PUBLIC */ - -// NOTE: This same file provides APIs to parse both if-assertion and -// static-if-assertion traits (because the code re-uses same implementation -// macros and because the traits inspection public macros are the same). - -// Maximum number of nested if and static-if assertions that can be parsed -// (before pp errors). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_LIMIT 64 - -// ASSERTION_TRAITS_KEY(traits) expands to `if` for if-assertion and to -// `static if` for static-if-assertion (this can be checked in "one step" using -// the ..._STATIC_IF_..._IS macro below). - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS(tokens) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STATIC_FRONT(tokens), \ - BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS_ \ - , \ - 0 BOOST_PP_TUPLE_EAT(1) \ - )(tokens) - -/* PRIVATE */ - -// Precondition: tokens = `static ...`. -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_IS_(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_IF_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT( \ - tokens BOOST_PP_NIL \ - ) \ - ) - -/* PUBLIC (1) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_1(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_1_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_1( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_1_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_1( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_1_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_1( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_1_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_1(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_1_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_1( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_1_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_1( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_1_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_1( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_1_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_1( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_1_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (1) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_1_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_1( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_1( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_1( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_1_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_1_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_1_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_1_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_1_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_1_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_1_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_1_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_1_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_1_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_1_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_1_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_1_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_1_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_1_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_1_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_1_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_1_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_1_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_1_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_1_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_1_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_1_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_1_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_1_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_1_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_1_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_1_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_1_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_2 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_2 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_1_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_1_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_1_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_1_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_1_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_1_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_2, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_2, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_2 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_1_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_1_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_2, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_2, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_2 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_1_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (2) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_2(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_2_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_2( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_2_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_2( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_2_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_2( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_2_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_2(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_2_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_2( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_2_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_2( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_2_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_2( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_2_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_2( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_2_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (2) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_2_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_2( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_2( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_2( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_2_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_2_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_2_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_2_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_2_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_2_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_2_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_2_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_2_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_2_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_2_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_2_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_2_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_2_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_2_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_2_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_2_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_2_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_2_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_2_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_2_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_2_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_2_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_2_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_2_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_2_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_2_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_2_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_2_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_3 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_3 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_2_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_2_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_2_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_2_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_2_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_2_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_3, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_3, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_3 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_2_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_2_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_3, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_3, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_3 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_2_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (3) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_3(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_3_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_3( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_3_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_3( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_3_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_3( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_3_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_3(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_3_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_3( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_3_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_3( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_3_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_3( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_3_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_3( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_3_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (3) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_3_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_3( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_3( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_3( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_3_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_3_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_3_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_3_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_3_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_3_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_3_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_3_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_3_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_3_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_3_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_3_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_3_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_3_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_3_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_3_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_3_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_3_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_3_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_3_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_3_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_3_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_3_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_3_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_3_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_3_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_3_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_3_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_3_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_4 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_4 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_3_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_3_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_3_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_3_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_3_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_3_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_4, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_4, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_4 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_3_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_3_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_4, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_4, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_4 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_3_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (4) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_4(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_4_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_4( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_4_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_4( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_4_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_4( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_4_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_4(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_4_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_4( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_4_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_4( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_4_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_4( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_4_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_4( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_4_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (4) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_4_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_4( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_4( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_4( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_4_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_4_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_4_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_4_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_4_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_4_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_4_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_4_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_4_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_4_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_4_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_4_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_4_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_4_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_4_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_4_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_4_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_4_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_4_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_4_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_4_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_4_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_4_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_4_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_4_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_4_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_4_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_4_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_4_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_5 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_5 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_4_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_4_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_4_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_4_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_4_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_4_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_5, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_5, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_5 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_4_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_4_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_5, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_5, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_5 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_4_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (5) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_5(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_5_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_5( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_5_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_5( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_5_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_5( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_5_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_5(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_5_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_5( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_5_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_5( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_5_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_5( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_5_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_5( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_5_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (5) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_5_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_5( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_5( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_5( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_5_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_5_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_5_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_5_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_5_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_5_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_5_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_5_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_5_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_5_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_5_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_5_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_5_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_5_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_5_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_5_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_5_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_5_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_5_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_5_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_5_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_5_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_5_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_5_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_5_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_5_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_5_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_5_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_5_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_6 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_6 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_5_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_5_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_5_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_5_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_5_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_5_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_6, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_6, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_6 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_5_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_5_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_6, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_6, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_6 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_5_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (6) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_6(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_6_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_6( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_6_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_6( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_6_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_6( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_6_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_6(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_6_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_6( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_6_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_6( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_6_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_6( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_6_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_6( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_6_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (6) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_6_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_6( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_6( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_6( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_6_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_6_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_6_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_6_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_6_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_6_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_6_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_6_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_6_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_6_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_6_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_6_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_6_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_6_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_6_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_6_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_6_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_6_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_6_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_6_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_6_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_6_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_6_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_6_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_6_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_6_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_6_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_6_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_6_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_7 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_7 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_6_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_6_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_6_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_6_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_6_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_6_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_7, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_7, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_7 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_6_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_6_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_7, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_7, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_7 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_6_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (7) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_7(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_7_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_7( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_7_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_7( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_7_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_7( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_7_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_7(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_7_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_7( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_7_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_7( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_7_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_7( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_7_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_7( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_7_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (7) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_7_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_7( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_7( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_7( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_7_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_7_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_7_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_7_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_7_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_7_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_7_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_7_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_7_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_7_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_7_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_7_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_7_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_7_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_7_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_7_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_7_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_7_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_7_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_7_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_7_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_7_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_7_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_7_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_7_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_7_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_7_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_7_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_7_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_8 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_8 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_7_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_7_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_7_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_7_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_7_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_7_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_8, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_8, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_8 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_7_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_7_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_8, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_8, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_8 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_7_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (8) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_8(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_8_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_8( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_8_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_8( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_8_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_8( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_8_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_8(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_8_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_8( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_8_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_8( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_8_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_8( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_8_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_8( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_8_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (8) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_8_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_8( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_8( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_8( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_8_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_8_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_8_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_8_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_8_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_8_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_8_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_8_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_8_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_8_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_8_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_8_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_8_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_8_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_8_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_8_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_8_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_8_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_8_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_8_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_8_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_8_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_8_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_8_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_8_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_8_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_8_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_8_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_8_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_9 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_9 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_8_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_8_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_8_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_8_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_8_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_8_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_9, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_9, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_9 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_8_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_8_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_9, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_9, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_9 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_8_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (9) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_9(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_9_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_9( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_9_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_9( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_9_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_9( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_9_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_9(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_9_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_9( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_9_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_9( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_9_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_9( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_9_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_9( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_9_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (9) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_9_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_9( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_9( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_9( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_9_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_9_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_9_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_9_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_9_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_9_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_9_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_9_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_9_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_9_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_9_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_9_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_9_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_9_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_9_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_9_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_9_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_9_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_9_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_9_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_9_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_9_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_9_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_9_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_9_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_9_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_9_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_9_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_9_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_10 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_10 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_9_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_9_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_9_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_9_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_9_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_9_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_10, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_10, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_10 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_9_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_9_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_10, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_10, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_10 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_9_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (10) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_10(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_10_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_10( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_10_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_10( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_10_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_10( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_10_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_10(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_10_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_10( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_10_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_10( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_10_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_10( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_10_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_10( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_10_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (10) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_10_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_10( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_10( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_10( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_10_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_10_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_10_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_10_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_10_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_10_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_10_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_10_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_10_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_10_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_10_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_10_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_10_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_10_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_10_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_10_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_10_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_10_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_10_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_10_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_10_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_10_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_10_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_10_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_10_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_10_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_10_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_10_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_10_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_11 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_11 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_10_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_10_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_10_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_10_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_10_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_10_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_11, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_11, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_11 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_10_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_10_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_11, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_11, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_11 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_10_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (11) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_11(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_11_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_11( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_11_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_11( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_11_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_11( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_11_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_11(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_11_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_11( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_11_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_11( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_11_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_11( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_11_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_11( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_11_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (11) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_11_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_11( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_11( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_11( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_11_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_11_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_11_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_11_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_11_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_11_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_11_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_11_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_11_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_11_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_11_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_11_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_11_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_11_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_11_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_11_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_11_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_11_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_11_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_11_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_11_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_11_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_11_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_11_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_11_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_11_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_11_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_11_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_11_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_12 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_12 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_11_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_11_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_11_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_11_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_11_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_11_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_12, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_12, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_12 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_11_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_11_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_12, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_12, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_12 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_11_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (12) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_12(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_12_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_12( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_12_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_12( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_12_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_12( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_12_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_12(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_12_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_12( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_12_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_12( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_12_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_12( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_12_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_12( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_12_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (12) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_12_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_12( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_12( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_12( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_12_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_12_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_12_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_12_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_12_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_12_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_12_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_12_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_12_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_12_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_12_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_12_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_12_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_12_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_12_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_12_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_12_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_12_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_12_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_12_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_12_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_12_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_12_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_12_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_12_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_12_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_12_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_12_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_12_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_13 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_13 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_12_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_12_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_12_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_12_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_12_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_12_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_13, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_13, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_13 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_12_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_12_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_13, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_13, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_13 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_12_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (13) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_13(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_13_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_13( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_13_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_13( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_13_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_13( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_13_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_13(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_13_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_13( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_13_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_13( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_13_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_13( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_13_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_13( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_13_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (13) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_13_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_13( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_13( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_13( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_13_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_13_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_13_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_13_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_13_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_13_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_13_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_13_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_13_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_13_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_13_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_13_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_13_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_13_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_13_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_13_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_13_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_13_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_13_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_13_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_13_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_13_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_13_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_13_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_13_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_13_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_13_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_13_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_13_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_14 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_14 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_13_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_13_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_13_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_13_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_13_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_13_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_14, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_14, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_14 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_13_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_13_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_14, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_14, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_14 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_13_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (14) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_14(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_14_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_14( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_14_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_14( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_14_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_14( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_14_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_14(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_14_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_14( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_14_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_14( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_14_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_14( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_14_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_14( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_14_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (14) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_14_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_14( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_14( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_14( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_14_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_14_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_14_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_14_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_14_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_14_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_14_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_14_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_14_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_14_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_14_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_14_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_14_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_14_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_14_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_14_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_14_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_14_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_14_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_14_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_14_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_14_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_14_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_14_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_14_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_14_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_14_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_14_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_14_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_15 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_15 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_14_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_14_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_14_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_14_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_14_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_14_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_15, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_15, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_15 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_14_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_14_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_15, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_15, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_15 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_14_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (15) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_15(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_15_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_15( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_15_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_15( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_15_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_15( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_15_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_15(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_15_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_15( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_15_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_15( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_15_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_15( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_15_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_15( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_15_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (15) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_15_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_15( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_15( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_15( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_15_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_15_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_15_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_15_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_15_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_15_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_15_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_15_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_15_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_15_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_15_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_15_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_15_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_15_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_15_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_15_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_15_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_15_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_15_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_15_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_15_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_15_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_15_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_15_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_15_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_15_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_15_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_15_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_15_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_16 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_16 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_15_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_15_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_15_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_15_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_15_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_15_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_16, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_16, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_16 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_15_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_15_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_16, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_16, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_16 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_15_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (16) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_16(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_16_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_16( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_16_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_16( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_16_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_16( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_16_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_16(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_16_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_16( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_16_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_16( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_16_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_16( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_16_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_16( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_16_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (16) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_16_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_16( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_16( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_16( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_16_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_16_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_16_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_16_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_16_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_16_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_16_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_16_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_16_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_16_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_16_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_16_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_16_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_16_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_16_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_16_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_16_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_16_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_16_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_16_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_16_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_16_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_16_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_16_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_16_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_16_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_16_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_16_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_16_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_17 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_17 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_16_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_16_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_16_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_16_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_16_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_16_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_17, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_17, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_17 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_16_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_16_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_17, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_17, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_17 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_16_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (17) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_17(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_17_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_17( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_17_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_17( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_17_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_17( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_17_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_17(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_17_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_17( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_17_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_17( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_17_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_17( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_17_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_17( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_17_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (17) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_17_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_17( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_17( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_17( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_17_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_17_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_17_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_17_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_17_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_17_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_17_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_17_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_17_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_17_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_17_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_17_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_17_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_17_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_17_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_17_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_17_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_17_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_17_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_17_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_17_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_17_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_17_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_17_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_17_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_17_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_17_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_17_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_17_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_18 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_18 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_17_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_17_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_17_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_17_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_17_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_17_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_18, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_18, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_18 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_17_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_17_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_18, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_18, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_18 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_17_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (18) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_18(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_18_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_18( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_18_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_18( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_18_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_18( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_18_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_18(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_18_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_18( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_18_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_18( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_18_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_18( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_18_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_18( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_18_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (18) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_18_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_18( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_18( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_18( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_18_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_18_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_18_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_18_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_18_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_18_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_18_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_18_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_18_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_18_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_18_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_18_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_18_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_18_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_18_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_18_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_18_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_18_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_18_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_18_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_18_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_18_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_18_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_18_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_18_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_18_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_18_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_18_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_18_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_19 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_19 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_18_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_18_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_18_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_18_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_18_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_18_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_19, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_19, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_19 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_18_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_18_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_19, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_19, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_19 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_18_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (19) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_19(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_19_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_19( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_19_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_19( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_19_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_19( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_19_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_19(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_19_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_19( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_19_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_19( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_19_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_19( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_19_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_19( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_19_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (19) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_19_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_19( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_19( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_19( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_19_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_19_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_19_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_19_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_19_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_19_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_19_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_19_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_19_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_19_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_19_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_19_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_19_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_19_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_19_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_19_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_19_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_19_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_19_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_19_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_19_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_19_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_19_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_19_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_19_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_19_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_19_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_19_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_19_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_20 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_20 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_19_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_19_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_19_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_19_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_19_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_19_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_20, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_20, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_20 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_19_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_19_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_20, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_20, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_20 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_19_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (20) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_20(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_20_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_20( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_20_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_20( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_20_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_20( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_20_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_20(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_20_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_20( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_20_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_20( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_20_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_20( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_20_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_20( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_20_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (20) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_20_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_20( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_20( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_20( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_20_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_20_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_20_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_20_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_20_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_20_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_20_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_20_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_20_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_20_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_20_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_20_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_20_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_20_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_20_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_20_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_20_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_20_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_20_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_20_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_20_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_20_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_20_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_20_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_20_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_20_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_20_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_20_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_20_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_21 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_21 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_20_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_20_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_20_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_20_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_20_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_20_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_21, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_21, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_21 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_20_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_20_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_21, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_21, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_21 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_20_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (21) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_21(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_21_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_21( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_21_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_21( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_21_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_21( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_21_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_21(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_21_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_21( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_21_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_21( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_21_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_21( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_21_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_21( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_21_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (21) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_21_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_21( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_21( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_21( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_21_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_21_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_21_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_21_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_21_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_21_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_21_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_21_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_21_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_21_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_21_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_21_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_21_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_21_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_21_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_21_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_21_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_21_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_21_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_21_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_21_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_21_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_21_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_21_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_21_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_21_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_21_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_21_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_21_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_22 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_22 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_21_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_21_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_21_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_21_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_21_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_21_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_22, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_22, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_22 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_21_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_21_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_22, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_22, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_22 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_21_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (22) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_22(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_22_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_22( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_22_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_22( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_22_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_22( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_22_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_22(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_22_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_22( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_22_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_22( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_22_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_22( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_22_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_22( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_22_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (22) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_22_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_22( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_22( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_22( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_22_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_22_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_22_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_22_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_22_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_22_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_22_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_22_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_22_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_22_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_22_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_22_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_22_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_22_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_22_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_22_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_22_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_22_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_22_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_22_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_22_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_22_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_22_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_22_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_22_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_22_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_22_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_22_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_22_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_23 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_23 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_22_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_22_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_22_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_22_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_22_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_22_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_23, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_23, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_23 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_22_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_22_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_23, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_23, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_23 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_22_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (23) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_23(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_23_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_23( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_23_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_23( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_23_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_23( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_23_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_23(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_23_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_23( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_23_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_23( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_23_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_23( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_23_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_23( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_23_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (23) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_23_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_23( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_23( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_23( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_23_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_23_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_23_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_23_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_23_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_23_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_23_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_23_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_23_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_23_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_23_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_23_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_23_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_23_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_23_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_23_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_23_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_23_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_23_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_23_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_23_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_23_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_23_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_23_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_23_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_23_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_23_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_23_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_23_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_24 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_24 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_23_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_23_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_23_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_23_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_23_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_23_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_24, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_24, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_24 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_23_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_23_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_24, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_24, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_24 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_23_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (24) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_24(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_24_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_24( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_24_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_24( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_24_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_24( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_24_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_24(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_24_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_24( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_24_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_24( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_24_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_24( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_24_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_24( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_24_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (24) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_24_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_24( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_24( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_24( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_24_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_24_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_24_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_24_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_24_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_24_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_24_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_24_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_24_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_24_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_24_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_24_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_24_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_24_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_24_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_24_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_24_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_24_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_24_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_24_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_24_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_24_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_24_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_24_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_24_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_24_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_24_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_24_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_24_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_25 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_25 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_24_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_24_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_24_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_24_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_24_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_24_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_25, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_25, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_25 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_24_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_24_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_25, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_25, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_25 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_24_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (25) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_25(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_25_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_25( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_25_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_25( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_25_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_25( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_25_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_25(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_25_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_25( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_25_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_25( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_25_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_25( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_25_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_25( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_25_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (25) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_25_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_25( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_25( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_25( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_25_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_25_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_25_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_25_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_25_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_25_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_25_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_25_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_25_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_25_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_25_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_25_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_25_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_25_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_25_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_25_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_25_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_25_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_25_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_25_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_25_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_25_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_25_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_25_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_25_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_25_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_25_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_25_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_25_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_26 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_26 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_25_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_25_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_25_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_25_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_25_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_25_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_26, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_26, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_26 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_25_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_25_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_26, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_26, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_26 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_25_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (26) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_26(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_26_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_26( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_26_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_26( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_26_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_26( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_26_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_26(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_26_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_26( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_26_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_26( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_26_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_26( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_26_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_26( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_26_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (26) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_26_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_26( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_26( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_26( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_26_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_26_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_26_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_26_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_26_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_26_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_26_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_26_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_26_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_26_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_26_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_26_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_26_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_26_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_26_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_26_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_26_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_26_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_26_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_26_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_26_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_26_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_26_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_26_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_26_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_26_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_26_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_26_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_26_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_27 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_27 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_26_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_26_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_26_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_26_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_26_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_26_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_27, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_27, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_27 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_26_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_26_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_27, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_27, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_27 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_26_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (27) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_27(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_27_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_27( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_27_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_27( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_27_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_27( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_27_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_27(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_27_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_27( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_27_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_27( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_27_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_27( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_27_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_27( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_27_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (27) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_27_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_27( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_27( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_27( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_27_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_27_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_27_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_27_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_27_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_27_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_27_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_27_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_27_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_27_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_27_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_27_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_27_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_27_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_27_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_27_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_27_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_27_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_27_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_27_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_27_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_27_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_27_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_27_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_27_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_27_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_27_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_27_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_27_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_28 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_28 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_27_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_27_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_27_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_27_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_27_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_27_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_28, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_28, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_28 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_27_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_27_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_28, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_28, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_28 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_27_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (28) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_28(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_28_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_28( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_28_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_28( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_28_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_28( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_28_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_28(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_28_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_28( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_28_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_28( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_28_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_28( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_28_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_28( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_28_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (28) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_28_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_28( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_28( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_28( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_28_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_28_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_28_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_28_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_28_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_28_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_28_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_28_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_28_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_28_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_28_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_28_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_28_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_28_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_28_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_28_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_28_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_28_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_28_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_28_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_28_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_28_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_28_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_28_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_28_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_28_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_28_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_28_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_28_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_29 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_29 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_28_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_28_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_28_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_28_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_28_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_28_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_29, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_29, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_29 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_28_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_28_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_29, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_29, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_29 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_28_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (29) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_29(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_29_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_29( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_29_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_29( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_29_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_29( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_29_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_29(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_29_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_29( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_29_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_29( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_29_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_29( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_29_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_29( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_29_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (29) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_29_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_29( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_29( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_29( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_29_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_29_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_29_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_29_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_29_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_29_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_29_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_29_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_29_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_29_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_29_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_29_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_29_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_29_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_29_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_29_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_29_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_29_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_29_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_29_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_29_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_29_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_29_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_29_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_29_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_29_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_29_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_29_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_29_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_30 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_30 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_29_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_29_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_29_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_29_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_29_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_29_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_30, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_30, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_30 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_29_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_29_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_30, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_30, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_30 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_29_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (30) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_30(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_30_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_30( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_30_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_30( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_30_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_30( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_30_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_30(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_30_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_30( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_30_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_30( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_30_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_30( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_30_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_30( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_30_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (30) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_30_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_30( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_30( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_30( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_30_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_30_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_30_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_30_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_30_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_30_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_30_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_30_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_30_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_30_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_30_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_30_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_30_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_30_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_30_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_30_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_30_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_30_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_30_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_30_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_30_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_30_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_30_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_30_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_30_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_30_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_30_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_30_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_30_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_31 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_31 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_30_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_30_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_30_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_30_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_30_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_30_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_31, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_31, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_31 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_30_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_30_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_31, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_31, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_31 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_30_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (31) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_31(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_31_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_31( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_31_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_31( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_31_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_31( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_31_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_31(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_31_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_31( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_31_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_31( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_31_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_31( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_31_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_31( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_31_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (31) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_31_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_31( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_31( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_31( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_31_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_31_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_31_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_31_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_31_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_31_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_31_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_31_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_31_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_31_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_31_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_31_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_31_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_31_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_31_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_31_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_31_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_31_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_31_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_31_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_31_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_31_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_31_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_31_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_31_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_31_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_31_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_31_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_31_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_32 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_32 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_31_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_31_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_31_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_31_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_31_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_31_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_32, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_32, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_32 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_31_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_31_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_32, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_32, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_32 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_31_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (32) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_32(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_32_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_32( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_32_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_32( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_32_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_32( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_32_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_32(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_32_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_32( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_32_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_32( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_32_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_32( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_32_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_32( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_32_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (32) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_32_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_32( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_32( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_32( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_32_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_32_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_32_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_32_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_32_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_32_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_32_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_32_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_32_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_32_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_32_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_32_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_32_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_32_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_32_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_32_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_32_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_32_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_32_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_32_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_32_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_32_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_32_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_32_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_32_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_32_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_32_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_32_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_32_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_33 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_33 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_32_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_32_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_32_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_32_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_32_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_32_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_33, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_33, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_33 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_32_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_32_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_33, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_33, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_33 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_32_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (33) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_33(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_33_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_33( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_33_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_33( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_33_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_33( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_33_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_33(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_33_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_33( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_33_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_33( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_33_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_33( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_33_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_33( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_33_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (33) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_33_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_33( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_33( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_33( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_33_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_33_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_33_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_33_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_33_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_33_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_33_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_33_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_33_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_33_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_33_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_33_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_33_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_33_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_33_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_33_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_33_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_33_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_33_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_33_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_33_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_33_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_33_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_33_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_33_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_33_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_33_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_33_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_33_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_34 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_34 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_33_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_33_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_33_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_33_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_33_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_33_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_34, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_34, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_34 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_33_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_33_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_34, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_34, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_34 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_33_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (34) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_34(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_34_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_34( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_34_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_34( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_34_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_34( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_34_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_34(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_34_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_34( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_34_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_34( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_34_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_34( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_34_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_34( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_34_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (34) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_34_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_34( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_34( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_34( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_34_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_34_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_34_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_34_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_34_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_34_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_34_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_34_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_34_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_34_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_34_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_34_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_34_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_34_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_34_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_34_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_34_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_34_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_34_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_34_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_34_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_34_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_34_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_34_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_34_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_34_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_34_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_34_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_34_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_35 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_35 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_34_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_34_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_34_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_34_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_34_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_34_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_35, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_35, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_35 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_34_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_34_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_35, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_35, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_35 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_34_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (35) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_35(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_35_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_35( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_35_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_35( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_35_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_35( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_35_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_35(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_35_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_35( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_35_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_35( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_35_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_35( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_35_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_35( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_35_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (35) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_35_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_35( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_35( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_35( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_35_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_35_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_35_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_35_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_35_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_35_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_35_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_35_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_35_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_35_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_35_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_35_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_35_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_35_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_35_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_35_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_35_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_35_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_35_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_35_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_35_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_35_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_35_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_35_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_35_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_35_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_35_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_35_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_35_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_36 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_36 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_35_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_35_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_35_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_35_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_35_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_35_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_36, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_36, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_36 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_35_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_35_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_36, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_36, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_36 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_35_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (36) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_36(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_36_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_36( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_36_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_36( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_36_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_36( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_36_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_36(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_36_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_36( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_36_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_36( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_36_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_36( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_36_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_36( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_36_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (36) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_36_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_36( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_36( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_36( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_36_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_36_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_36_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_36_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_36_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_36_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_36_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_36_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_36_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_36_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_36_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_36_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_36_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_36_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_36_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_36_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_36_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_36_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_36_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_36_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_36_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_36_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_36_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_36_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_36_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_36_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_36_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_36_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_36_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_37 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_37 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_36_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_36_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_36_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_36_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_36_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_36_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_37, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_37, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_37 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_36_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_36_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_37, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_37, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_37 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_36_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (37) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_37(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_37_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_37( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_37_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_37( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_37_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_37( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_37_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_37(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_37_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_37( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_37_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_37( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_37_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_37( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_37_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_37( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_37_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (37) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_37_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_37( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_37( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_37( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_37_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_37_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_37_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_37_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_37_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_37_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_37_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_37_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_37_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_37_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_37_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_37_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_37_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_37_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_37_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_37_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_37_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_37_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_37_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_37_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_37_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_37_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_37_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_37_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_37_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_37_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_37_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_37_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_37_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_38 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_38 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_37_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_37_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_37_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_37_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_37_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_37_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_38, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_38, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_38 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_37_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_37_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_38, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_38, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_38 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_37_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (38) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_38(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_38_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_38( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_38_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_38( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_38_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_38( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_38_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_38(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_38_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_38( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_38_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_38( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_38_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_38( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_38_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_38( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_38_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (38) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_38_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_38( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_38( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_38( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_38_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_38_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_38_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_38_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_38_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_38_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_38_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_38_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_38_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_38_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_38_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_38_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_38_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_38_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_38_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_38_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_38_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_38_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_38_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_38_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_38_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_38_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_38_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_38_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_38_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_38_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_38_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_38_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_38_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_39 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_39 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_38_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_38_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_38_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_38_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_38_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_38_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_39, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_39, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_39 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_38_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_38_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_39, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_39, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_39 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_38_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (39) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_39(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_39_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_39( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_39_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_39( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_39_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_39( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_39_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_39(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_39_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_39( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_39_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_39( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_39_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_39( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_39_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_39( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_39_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (39) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_39_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_39( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_39( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_39( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_39_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_39_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_39_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_39_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_39_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_39_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_39_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_39_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_39_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_39_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_39_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_39_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_39_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_39_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_39_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_39_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_39_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_39_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_39_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_39_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_39_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_39_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_39_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_39_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_39_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_39_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_39_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_39_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_39_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_40 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_40 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_39_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_39_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_39_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_39_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_39_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_39_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_40, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_40, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_40 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_39_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_39_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_40, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_40, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_40 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_39_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (40) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_40(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_40_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_40( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_40_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_40( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_40_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_40( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_40_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_40(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_40_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_40( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_40_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_40( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_40_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_40( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_40_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_40( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_40_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (40) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_40_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_40( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_40( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_40( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_40_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_40_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_40_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_40_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_40_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_40_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_40_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_40_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_40_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_40_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_40_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_40_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_40_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_40_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_40_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_40_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_40_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_40_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_40_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_40_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_40_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_40_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_40_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_40_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_40_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_40_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_40_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_40_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_40_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_41 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_41 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_40_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_40_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_40_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_40_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_40_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_40_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_41, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_41, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_41 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_40_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_40_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_41, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_41, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_41 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_40_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (41) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_41(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_41_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_41( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_41_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_41( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_41_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_41( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_41_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_41(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_41_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_41( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_41_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_41( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_41_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_41( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_41_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_41( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_41_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (41) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_41_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_41( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_41( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_41( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_41_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_41_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_41_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_41_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_41_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_41_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_41_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_41_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_41_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_41_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_41_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_41_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_41_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_41_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_41_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_41_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_41_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_41_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_41_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_41_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_41_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_41_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_41_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_41_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_41_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_41_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_41_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_41_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_41_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_42 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_42 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_41_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_41_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_41_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_41_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_41_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_41_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_42, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_42, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_42 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_41_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_41_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_42, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_42, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_42 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_41_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (42) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_42(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_42_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_42( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_42_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_42( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_42_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_42( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_42_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_42(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_42_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_42( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_42_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_42( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_42_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_42( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_42_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_42( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_42_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (42) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_42_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_42( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_42( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_42( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_42_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_42_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_42_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_42_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_42_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_42_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_42_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_42_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_42_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_42_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_42_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_42_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_42_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_42_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_42_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_42_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_42_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_42_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_42_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_42_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_42_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_42_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_42_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_42_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_42_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_42_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_42_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_42_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_42_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_43 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_43 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_42_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_42_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_42_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_42_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_42_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_42_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_43, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_43, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_43 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_42_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_42_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_43, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_43, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_43 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_42_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (43) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_43(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_43_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_43( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_43_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_43( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_43_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_43( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_43_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_43(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_43_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_43( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_43_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_43( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_43_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_43( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_43_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_43( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_43_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (43) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_43_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_43( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_43( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_43( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_43_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_43_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_43_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_43_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_43_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_43_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_43_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_43_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_43_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_43_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_43_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_43_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_43_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_43_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_43_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_43_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_43_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_43_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_43_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_43_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_43_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_43_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_43_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_43_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_43_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_43_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_43_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_43_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_43_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_44 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_44 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_43_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_43_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_43_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_43_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_43_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_43_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_44, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_44, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_44 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_43_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_43_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_44, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_44, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_44 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_43_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (44) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_44(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_44_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_44( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_44_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_44( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_44_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_44( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_44_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_44(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_44_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_44( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_44_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_44( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_44_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_44( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_44_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_44( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_44_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (44) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_44_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_44( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_44( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_44( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_44_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_44_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_44_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_44_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_44_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_44_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_44_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_44_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_44_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_44_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_44_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_44_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_44_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_44_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_44_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_44_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_44_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_44_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_44_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_44_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_44_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_44_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_44_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_44_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_44_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_44_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_44_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_44_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_44_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_45 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_45 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_44_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_44_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_44_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_44_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_44_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_44_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_45, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_45, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_45 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_44_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_44_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_45, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_45, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_45 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_44_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (45) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_45(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_45_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_45( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_45_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_45( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_45_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_45( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_45_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_45(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_45_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_45( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_45_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_45( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_45_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_45( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_45_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_45( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_45_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (45) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_45_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_45( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_45( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_45( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_45_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_45_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_45_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_45_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_45_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_45_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_45_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_45_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_45_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_45_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_45_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_45_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_45_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_45_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_45_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_45_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_45_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_45_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_45_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_45_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_45_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_45_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_45_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_45_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_45_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_45_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_45_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_45_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_45_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_46 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_46 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_45_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_45_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_45_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_45_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_45_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_45_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_46, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_46, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_46 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_45_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_45_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_46, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_46, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_46 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_45_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (46) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_46(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_46_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_46( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_46_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_46( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_46_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_46( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_46_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_46(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_46_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_46( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_46_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_46( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_46_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_46( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_46_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_46( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_46_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (46) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_46_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_46( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_46( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_46( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_46_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_46_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_46_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_46_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_46_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_46_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_46_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_46_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_46_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_46_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_46_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_46_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_46_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_46_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_46_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_46_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_46_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_46_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_46_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_46_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_46_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_46_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_46_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_46_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_46_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_46_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_46_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_46_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_46_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_47 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_47 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_46_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_46_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_46_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_46_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_46_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_46_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_47, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_47, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_47 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_46_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_46_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_47, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_47, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_47 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_46_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (47) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_47(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_47_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_47( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_47_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_47( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_47_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_47( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_47_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_47(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_47_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_47( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_47_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_47( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_47_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_47( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_47_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_47( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_47_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (47) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_47_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_47( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_47( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_47( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_47_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_47_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_47_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_47_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_47_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_47_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_47_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_47_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_47_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_47_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_47_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_47_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_47_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_47_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_47_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_47_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_47_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_47_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_47_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_47_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_47_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_47_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_47_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_47_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_47_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_47_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_47_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_47_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_47_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_48 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_48 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_47_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_47_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_47_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_47_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_47_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_47_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_48, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_48, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_48 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_47_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_47_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_48, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_48, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_48 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_47_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (48) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_48(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_48_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_48( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_48_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_48( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_48_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_48( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_48_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_48(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_48_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_48( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_48_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_48( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_48_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_48( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_48_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_48( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_48_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (48) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_48_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_48( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_48( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_48( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_48_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_48_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_48_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_48_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_48_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_48_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_48_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_48_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_48_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_48_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_48_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_48_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_48_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_48_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_48_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_48_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_48_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_48_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_48_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_48_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_48_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_48_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_48_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_48_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_48_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_48_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_48_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_48_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_48_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_49 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_49 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_48_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_48_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_48_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_48_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_48_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_48_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_49, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_49, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_49 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_48_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_48_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_49, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_49, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_49 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_48_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (49) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_49(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_49_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_49( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_49_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_49( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_49_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_49( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_49_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_49(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_49_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_49( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_49_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_49( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_49_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_49( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_49_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_49( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_49_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (49) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_49_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_49( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_49( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_49( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_49_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_49_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_49_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_49_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_49_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_49_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_49_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_49_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_49_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_49_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_49_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_49_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_49_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_49_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_49_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_49_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_49_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_49_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_49_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_49_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_49_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_49_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_49_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_49_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_49_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_49_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_49_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_49_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_49_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_50 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_50 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_49_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_49_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_49_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_49_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_49_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_49_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_50, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_50, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_50 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_49_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_49_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_50, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_50, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_50 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_49_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (50) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_50(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_50_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_50( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_50_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_50( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_50_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_50( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_50_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_50(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_50_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_50( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_50_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_50( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_50_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_50( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_50_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_50( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_50_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (50) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_50_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_50( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_50( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_50( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_50_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_50_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_50_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_50_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_50_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_50_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_50_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_50_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_50_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_50_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_50_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_50_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_50_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_50_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_50_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_50_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_50_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_50_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_50_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_50_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_50_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_50_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_50_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_50_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_50_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_50_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_50_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_50_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_50_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_51 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_51 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_50_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_50_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_50_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_50_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_50_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_50_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_51, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_51, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_51 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_50_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_50_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_51, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_51, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_51 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_50_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (51) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_51(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_51_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_51( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_51_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_51( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_51_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_51( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_51_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_51(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_51_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_51( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_51_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_51( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_51_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_51( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_51_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_51( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_51_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (51) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_51_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_51( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_51( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_51( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_51_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_51_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_51_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_51_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_51_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_51_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_51_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_51_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_51_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_51_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_51_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_51_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_51_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_51_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_51_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_51_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_51_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_51_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_51_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_51_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_51_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_51_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_51_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_51_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_51_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_51_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_51_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_51_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_51_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_52 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_52 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_51_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_51_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_51_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_51_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_51_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_51_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_52, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_52, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_52 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_51_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_51_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_52, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_52, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_52 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_51_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (52) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_52(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_52_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_52( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_52_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_52( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_52_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_52( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_52_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_52(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_52_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_52( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_52_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_52( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_52_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_52( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_52_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_52( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_52_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (52) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_52_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_52( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_52( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_52( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_52_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_52_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_52_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_52_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_52_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_52_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_52_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_52_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_52_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_52_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_52_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_52_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_52_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_52_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_52_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_52_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_52_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_52_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_52_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_52_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_52_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_52_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_52_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_52_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_52_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_52_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_52_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_52_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_52_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_53 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_53 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_52_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_52_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_52_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_52_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_52_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_52_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_53, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_53, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_53 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_52_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_52_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_53, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_53, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_53 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_52_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (53) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_53(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_53_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_53( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_53_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_53( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_53_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_53( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_53_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_53(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_53_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_53( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_53_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_53( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_53_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_53( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_53_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_53( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_53_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (53) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_53_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_53( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_53( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_53( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_53_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_53_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_53_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_53_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_53_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_53_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_53_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_53_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_53_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_53_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_53_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_53_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_53_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_53_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_53_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_53_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_53_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_53_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_53_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_53_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_53_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_53_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_53_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_53_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_53_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_53_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_53_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_53_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_53_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_54 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_54 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_53_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_53_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_53_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_53_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_53_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_53_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_54, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_54, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_54 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_53_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_53_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_54, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_54, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_54 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_53_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (54) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_54(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_54_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_54( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_54_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_54( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_54_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_54( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_54_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_54(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_54_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_54( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_54_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_54( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_54_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_54( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_54_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_54( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_54_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (54) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_54_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_54( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_54( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_54( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_54_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_54_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_54_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_54_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_54_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_54_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_54_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_54_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_54_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_54_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_54_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_54_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_54_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_54_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_54_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_54_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_54_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_54_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_54_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_54_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_54_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_54_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_54_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_54_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_54_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_54_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_54_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_54_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_54_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_55 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_55 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_54_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_54_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_54_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_54_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_54_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_54_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_55, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_55, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_55 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_54_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_54_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_55, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_55, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_55 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_54_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (55) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_55(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_55_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_55( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_55_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_55( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_55_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_55( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_55_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_55(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_55_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_55( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_55_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_55( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_55_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_55( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_55_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_55( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_55_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (55) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_55_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_55( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_55( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_55( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_55_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_55_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_55_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_55_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_55_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_55_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_55_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_55_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_55_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_55_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_55_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_55_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_55_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_55_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_55_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_55_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_55_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_55_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_55_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_55_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_55_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_55_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_55_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_55_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_55_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_55_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_55_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_55_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_55_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_56 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_56 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_55_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_55_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_55_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_55_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_55_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_55_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_56, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_56, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_56 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_55_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_55_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_56, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_56, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_56 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_55_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (56) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_56(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_56_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_56( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_56_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_56( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_56_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_56( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_56_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_56(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_56_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_56( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_56_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_56( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_56_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_56( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_56_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_56( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_56_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (56) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_56_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_56( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_56( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_56( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_56_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_56_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_56_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_56_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_56_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_56_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_56_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_56_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_56_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_56_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_56_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_56_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_56_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_56_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_56_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_56_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_56_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_56_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_56_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_56_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_56_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_56_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_56_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_56_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_56_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_56_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_56_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_56_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_56_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_57 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_57 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_56_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_56_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_56_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_56_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_56_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_56_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_57, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_57, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_57 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_56_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_56_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_57, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_57, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_57 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_56_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (57) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_57(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_57_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_57( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_57_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_57( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_57_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_57( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_57_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_57(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_57_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_57( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_57_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_57( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_57_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_57( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_57_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_57( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_57_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (57) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_57_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_57( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_57( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_57( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_57_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_57_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_57_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_57_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_57_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_57_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_57_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_57_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_57_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_57_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_57_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_57_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_57_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_57_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_57_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_57_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_57_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_57_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_57_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_57_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_57_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_57_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_57_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_57_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_57_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_57_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_57_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_57_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_57_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_58 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_58 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_57_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_57_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_57_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_57_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_57_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_57_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_58, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_58, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_58 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_57_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_57_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_58, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_58, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_58 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_57_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (58) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_58(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_58_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_58( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_58_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_58( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_58_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_58( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_58_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_58(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_58_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_58( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_58_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_58( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_58_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_58( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_58_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_58( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_58_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (58) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_58_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_58( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_58( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_58( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_58_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_58_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_58_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_58_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_58_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_58_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_58_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_58_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_58_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_58_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_58_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_58_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_58_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_58_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_58_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_58_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_58_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_58_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_58_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_58_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_58_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_58_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_58_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_58_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_58_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_58_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_58_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_58_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_58_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_59 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_59 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_58_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_58_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_58_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_58_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_58_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_58_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_59, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_59, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_59 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_58_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_58_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_59, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_59, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_59 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_58_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (59) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_59(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_59_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_59( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_59_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_59( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_59_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_59( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_59_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_59(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_59_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_59( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_59_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_59( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_59_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_59( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_59_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_59( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_59_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (59) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_59_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_59( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_59( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_59( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_59_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_59_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_59_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_59_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_59_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_59_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_59_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_59_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_59_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_59_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_59_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_59_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_59_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_59_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_59_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_59_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_59_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_59_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_59_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_59_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_59_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_59_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_59_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_59_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_59_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_59_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_59_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_59_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_59_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_60 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_60 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_59_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_59_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_59_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_59_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_59_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_59_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_60, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_60, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_60 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_59_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_59_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_60, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_60, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_60 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_59_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (60) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_60(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_60_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_60( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_60_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_60( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_60_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_60( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_60_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_60(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_60_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_60( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_60_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_60( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_60_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_60( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_60_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_60( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_60_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (60) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_60_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_60( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_60( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_60( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_60_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_60_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_60_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_60_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_60_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_60_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_60_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_60_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_60_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_60_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_60_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_60_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_60_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_60_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_60_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_60_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_60_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_60_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_60_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_60_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_60_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_60_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_60_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_60_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_60_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_60_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_60_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_60_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_60_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_61 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_61 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_60_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_60_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_60_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_60_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_60_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_60_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_61, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_61, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_61 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_60_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_60_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_61, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_61, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_61 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_60_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (61) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_61(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_61_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_61( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_61_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_61( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_61_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_61( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_61_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_61(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_61_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_61( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_61_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_61( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_61_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_61( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_61_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_61( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_61_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (61) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_61_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_61( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_61( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_61( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_61_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_61_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_61_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_61_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_61_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_61_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_61_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_61_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_61_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_61_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_61_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_61_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_61_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_61_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_61_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_61_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_61_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_61_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_61_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_61_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_61_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_61_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_61_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_61_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_61_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_61_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_61_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_61_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_61_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_62 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_62 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_61_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_61_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_61_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_61_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_61_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_61_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_62, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_62, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_62 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_61_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_61_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_62, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_62, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_62 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_61_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (62) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_62(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_62_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_62( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_62_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_62( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_62_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_62( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_62_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_62(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_62_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_62( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_62_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_62( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_62_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_62( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_62_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_62( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_62_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (62) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_62_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_62( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_62( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_62( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_62_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_62_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_62_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_62_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_62_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_62_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_62_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_62_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_62_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_62_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_62_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_62_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_62_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_62_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_62_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_62_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_62_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_62_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_62_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_62_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_62_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_62_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_62_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_62_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_62_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_62_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_62_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_62_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_62_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_63 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_63 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_62_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_62_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_62_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_62_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_62_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_62_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_63, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_63, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_63 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_62_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_62_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_63, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_63, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_63 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_62_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (63) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_63(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_63_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_63( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_63_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_63( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_63_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_63( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_63_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_63(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_63_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_63( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_63_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_63( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_63_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_63( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_63_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_63( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_63_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (63) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_63_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_63( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_63( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_63( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_63_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_63_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_63_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_63_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_63_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_63_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_63_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_63_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_63_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_63_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_63_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_63_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_63_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_63_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_63_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_63_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_63_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_63_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_63_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_63_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_63_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_63_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_63_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_63_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_63_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_63_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_63_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_63_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_63_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_64 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_64 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_63_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_63_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_63_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_63_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_63_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_63_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_64, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_64, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_64 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_63_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_63_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_64, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_64, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_64 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_63_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -/* PUBLIC (64) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_64(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_64_(d, l, 0, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_PARSE_D_L_64( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_64_(d, l, 1, 0, decl) - -#define BOOST_CONTRACT_EXT_PP_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_64( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_64_(d, l, 0, 1, decl) - -#define BOOST_CONTRACT_EXT_PP_POST_STATIC_IF_ASSERTION_TRAITS_PARSE_D_L_64( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_64_(d, l, 1, 1, decl) - -// Parse else assertions for both if and static-if. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_64(\ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_64_( \ - d, l, 0, decl_traits) - -// Parse else post-assertions for both if and static-if. -#define \ -BOOST_CONTRACT_EXT_PP_POST_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_64( \ - d, l, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_64_( \ - d, l, 1, decl_traits) - -// Precondition: decl = `if( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_64( \ - d, l, is_static, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_64_(d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IF_REMOVE_FRONT( \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_64( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_64_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Precondition: decl = `else ( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_64( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_64_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE (64) */ - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_PARSE_D_L_64_( \ - d, l, is_post, is_static, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_PARSE_D_L_64( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_PARSE_D_L_64( \ - d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_PARSE_D_L_64( \ - d, l, is_static, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_PP_EXPR_IIF(is_static, static) if, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))))) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_D_L_64_( \ - d, l, is_post, decl_traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) \ - ) \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_64_\ - , BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_64_ \ - )(d, l, is_post, decl_traits) - -#define \ -BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_YES_64_( \ - d, l, is_post, decl_traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_64_(d, l, is_post, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) \ - ) - -// If trying to replace else statements of a if that already had some, threat -// replacement `else ...` as a bool assertion (so it will eventually error). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_REPLACE_ELSES_PARSE_NO_64_(\ - d, l, is_post, decl_traits) \ - (bool(BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) BOOST_PP_NIL, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)) - -// Precondition: decl = `( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_ARGS_64_( \ - d, l, is_static, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_IIF(is_static, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_64_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_64_ \ - )(d, l, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -// Precondition: decl = `( ,,, )`. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_64_(d, l, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT( \ - BOOST_PP_TUPLE_ELEM(0, decl)), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_64_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_64_ \ - )(d, l, decl) - -// Precondition: decl = `(const( ,,, ) ...)` (so need to remove parens). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_CONST_64_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_CONST_ASSERTION_TRAITS_PARSE_D_L(d, l, \ - BOOST_PP_TUPLE_REM_CTOR(1, decl)) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_BOOL_64_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_PARSE(decl) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_64_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_64_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_64_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_ARGS_64_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_ELSE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_64_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_64_ \ - )(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_YES_64_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_64_(d, l, is_post, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_ELSE_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_64_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_64_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_64_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_64_ \ - ))(d, l, is_post, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NO_64_( \ - d, l, is_post, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `assertion BOOST_PP_NIL` (single assertion). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_YES_64_( \ - d, l, is_post, decl, traits) \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_64_(d, l, \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_65 \ - , \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_65 \ - )(d, l, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTION_PUSH_BACK_64_( \ - d, l, decl_assertion, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_assertion), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ( BOOST_PP_TUPLE_ELEM(2, 1, decl_assertion) ) BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( assertions,,, ) ...` (multiple assertions). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_YES_64_( \ - d, l, is_post, decl, traits) \ - BOOST_PP_IIF(is_post, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_64_ \ - , \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_64_ \ - )(d, l, decl, traits) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_POST_64_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_64_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_65, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_65, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_65 \ - ) \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ASSERTIONS_NOT_POST_64_( \ - d, l, decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_64_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_ ## l(d, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_65, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_65, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_65 \ - ) \ - ) \ - ) \ - ) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_EXPAND_TRAITS_64_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/if/cond.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/if/cond.hpp deleted file mode 100644 index 835433f..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion/if/cond.hpp +++ /dev/null @@ -1,21 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_HPP_ -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> - -/* PUBLIC */ - -// Expand to const-assertion-traits or bool-assertion-traits (depending on -// ASSERTION_TRAITS_KEY) to be inspected using CONST_ASSERTION_TRAITS and -// BOOL_ASSERTION_TRAITS respectively. -// For static-if, always expand to bool-assertion-traits. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_COND(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_IF_ASSERTION_COND, traits) - -// PARSE macro #defined in "if.hpp" (because easier for reentrant repetitions). - -#endif // #include gaurd - diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/if/elses.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/if/elses.hpp deleted file mode 100644 index 6248983..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion/if/elses.hpp +++ /dev/null @@ -1,19 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_HPP_ -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> - -/* PUBLIC */ - -// Expand to `pp-seq | EMPTY()`, pp-seq of assertion traits to be inspected via -// appropriate ..._ASSERTION_TRAITS_... macros. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_ELSES(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_IF_ASSERTION_ELSES, traits)() - -// PARSE macro #defined in "if.hpp" (because easier for reentrant repetitions). - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/if/thens.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/if/thens.hpp deleted file mode 100644 index 627c629..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion/if/thens.hpp +++ /dev/null @@ -1,19 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_HPP_ -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> - -/* PUBLIC */ - -// Expand to `pp-seq | EMPTY()`, pp-seq of assertion traits to be inspected via -// appropriate ..._ASSERTION_TRAITS_... macros. -#define BOOST_CONTRACT_EXT_PP_IF_ASSERTION_TRAITS_THENS(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_IF_ASSERTION_THENS, traits)() - -// PARSE macro #defined in "if.hpp" (because easier for reentrant repetitions). - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/key.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/key.hpp deleted file mode 100644 index 9dda7d0..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion/key.hpp +++ /dev/null @@ -1,26 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_ASSERTION_KEY_HPP_ -#define BOOST_CONTRACT_EXT_PP_ASSERTION_KEY_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/preprocessor/tuple/elem.hpp> - -/* PUBLIC */ - -// Expand to `namespace | using | typedef | return | ...oldof... | bool | -// const | if | static if` related assertion traits to be inspected with -// NAMESPACE_ASSERTION_TRAITS, USING_ASSERTION_TRAITS, etc. macros. -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_KEY(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_ASSERTION_KEY, traits) - -#define BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE(key, decl_traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits), key) \ - ) - -#endif // #incldue guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/namespace.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/namespace.hpp deleted file mode 100644 index da0579b..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion/namespace.hpp +++ /dev/null @@ -1,25 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_HPP_ -#define BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/assertion/namespace/name.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/namespace/new_name.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/key.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> - -/* PUBLIC */ - -// ASSERTION_TRAITS_KEY(traits) expands to `namespace` for this assertion. - -// Precondition: decl = `namespace (new-name) as name`. -#define BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_PARSE(decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_NAME_PARSE( \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_NEW_NAME_PARSE( \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE(namespace, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - ))))) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/namespace/name.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/namespace/name.hpp deleted file mode 100644 index 9229d1a..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion/namespace/name.hpp +++ /dev/null @@ -1,38 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_NAME_HPP_ -#define BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_NAME_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/utility/nil.hpp> -#include <boost/preprocessor/facilities/expand.hpp> - -/* PUBLIC */ - -// Expand to `name`. -#define BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_NAME(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_NAMESPACE_ASSERTION_NAME, \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_NAME_PARSE( \ - decl_traits) \ - BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_NAME_PARSE_ARGS_ \ - decl_traits \ - ) - -/* PRIVATE */ - -// Precondition: decl = `name NIL`. -#define BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_NAME_PARSE_ARGS_( \ - decl, traits) \ - ( \ - BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/namespace/new_name.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/namespace/new_name.hpp deleted file mode 100644 index 2fcb75b..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion/namespace/new_name.hpp +++ /dev/null @@ -1,47 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_NEW_NAME_HPP_ -#define BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_NEW_NAME_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/contract/as.hpp> -#include <boost/contract/ext_/preprocessor/keyword/namespace.hpp> -#include <boost/preprocessor/tuple/elem.hpp> -#include <boost/preprocessor/tuple/eat.hpp> -#include <boost/preprocessor/tuple/rem.hpp> - -/* PUBLIC */ - -// Expand to `new-name`. -#define BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_NEW_NAME(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_NAMESPACE_ASSERTION_NEW_NAME, \ - traits \ - ) - -// Precondition: decl = `namespace (new-name) as ...`. -#define BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_NEW_NAME_PARSE( \ - decl_traits) \ - BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_NEW_NAME_( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_REMOVE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE */ - -// Precondition: decl = `(new-name) as ...`. -#define BOOST_CONTRACT_EXT_PP_NAMESPACE_ASSERTION_TRAITS_NEW_NAME_( \ - decl, traits) \ - ( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_AS_REMOVE_FRONT( \ - BOOST_PP_TUPLE_EAT(1) decl), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_REM_CTOR(1, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/oldof.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/oldof.hpp deleted file mode 100644 index 42d6572..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion/oldof.hpp +++ /dev/null @@ -1,81 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_HPP_ -#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/assertion/oldof/assign.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/oldof/type.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/oldof/expr.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/bool/expr.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/key.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_IS(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `..._TRAITS_ODLOF` (this can be -// checked with `..._TRAITS_IS_OLDOF_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_OPERATOR_REMOVE_FRONT( \ - tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `..._TRAITS_OLDOF`. -#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_OPERATOR_REMOVE_BACK( \ - tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_CAT_TO_EMPTY, tokens) - -// This is the operator that decl. syntax must use to prefix old-of expressions: -// `{auto | wrapper-type} var = ..._OPERATOR exr`. -// Implementation: The OPERATOR_ before the comma `,` is used so that old-of -// assertion assignments can be cat-back by KEYWORD_..._BACK macros (PP_NIL -// could have been used as well). The OPERATOR_ after the comma `,` is used to -// tag the front of an old-of expression so old-of assertions can be recognized -// during parsing. -#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_OPERATOR \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_OPERATOR_, \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_OPERATOR_ - -// ASSERTION_TRAITS_KEY(traits) expands to `...OPERATOR_` above for this -// assertion (must check using the `..._IS` macro above). - -// Precondition: oldofdecl_booltraits = -// `(OLDOF expr, (bool) (auto-wrapped-type assign =)` (which is here transformed -// to the parsalbe decl = `(OLDOF expr) auto-wrapped-type assign =`). -#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_REPLACE_PARSE_D( \ - d, oldofdecl_booltraits) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_ASSIGN_PARSE( \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_TYPE_PARSE_D(d, \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_EXPR_PARSE( \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE( \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_OPERATOR_, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - (BOOST_PP_TUPLE_ELEM(2, 0, oldofdecl_booltraits)) \ - BOOST_CONTRACT_EXT_PP_BOOL_ASSERTION_TRAITS_EXPR( \ - BOOST_PP_TUPLE_ELEM(2, 1, oldofdecl_booltraits)) \ - BOOST_PP_NIL \ - )))))) - -/* PRIVATE */ - -// This macro name must NOT be #defined (used like a "keyword"). -#ifdef BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_OPERATOR_ -# error "reserved macro name must not be #defined" -#endif - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_CAT_TO_COMMABOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_OPERATOR_ , -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_CAT_TO_EMPTYBOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_OPERATOR_ -#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_OPERATOR_BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/oldof/assign.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/oldof/assign.hpp deleted file mode 100644 index 432befa..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion/oldof/assign.hpp +++ /dev/null @@ -1,42 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_ASSIGN_HPP_ -#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_ASSIGN_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/utility/nil.hpp> -#include <boost/preprocessor/facilities/expand.hpp> - -/* PUBLIC */ - -// Expand to `name = ` (note trailing `=` that cannot be removed via pp). -#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_ASSIGN(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_OLDOF_ASSERTION_ASSIGN, \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_ASSIGN_PARSE( \ - decl_traits) \ - BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_ASSIGN_PARSE_ARGS_ \ - decl_traits \ - ) - -/* PRIVATE */ - -// Precondition: decl = `name = OLDOF_OPERATOR_ NIL`. -#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_ASSIGN_PARSE_ARGS_( \ - decl, traits) \ - ( \ - BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_OPERATOR_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - decl \ - )) \ - ) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/oldof/expr.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/oldof/expr.hpp deleted file mode 100644 index 59637b5..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion/oldof/expr.hpp +++ /dev/null @@ -1,41 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_EXPR_HPP_ -#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_EXPR_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/preprocessor/facilities/expand.hpp> -#include <boost/preprocessor/tuple/eat.hpp> -#include <boost/preprocessor/tuple/rem.hpp> - -/* PUBLIC */ - -// Expand to `...` (tokens). -#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_EXPR(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_OLDOF_ASSERTION_EXPR, traits) - -#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_EXPR_PARSE(decl_traits) \ - BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_EXPR_PARSE_ARGS_ \ - decl_traits \ - ) - -/* PRIVATE */ - -// Precondition: decl = `(OLDOF expr) ...` -#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_EXPR_PARSE_ARGS_( \ - decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(1) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_OPERATOR_REMOVE_FRONT(\ - BOOST_PP_TUPLE_REM_CTOR(1, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/oldof/type.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/oldof/type.hpp deleted file mode 100644 index 62341bc..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion/oldof/type.hpp +++ /dev/null @@ -1,29 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_TYPE_HPP_ -#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_TYPE_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/type.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/preprocessor/tuple/elem.hpp> - -/* PUBLIC */ - -// Expand to `auto | (type,,,)` (this should never be empty). -#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_TYPE(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_OLDOF_ASSERTION_TYPE, \ - traits \ - )() - -// Precondition: decl = `{auto | wrapped-type} ...`. -#define BOOST_CONTRACT_EXT_PP_OLDOF_ASSERTION_TRAITS_TYPE_PARSE_D(d, \ - decl_traits) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_PUSH_BACK( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D(d, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/return.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/return.hpp deleted file mode 100644 index a4666e6..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion/return.hpp +++ /dev/null @@ -1,25 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_HPP_ -#define BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/assertion/return/assign.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/return/type.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/key.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> - -/* PUBLIC */ - -// ASSERTION_TRAITS_KEY(traits) expands to `return` for this assertion. - -// Precondition: decl = `typedef wrapped-type new-name`. -#define BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_PARSE_D(d, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_ASSIGN_PARSE( \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_TYPE_PARSE_D(d, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE(return, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - ))))) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/return/assign.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/return/assign.hpp deleted file mode 100644 index e47c582..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion/return/assign.hpp +++ /dev/null @@ -1,43 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_ASSIGN_HPP_ -#define BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_ASSIGN_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/return.hpp> -#include <boost/contract/ext_/preprocessor/utility/nil.hpp> -#include <boost/preprocessor/facilities/expand.hpp> - -/* PUBLIC */ - -// Expand to `name =` (note trailing `=` that cannot be removed via pp). -#define BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_ASSIGN(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_RETURN_ASSERTION_ASSIGN, \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_ASSIGN_PARSE( \ - decl_traits) \ - BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_ASSIGN_PARSE_ARGS_ \ - decl_traits \ - ) - -/* PRIVATE */ - -// Precondition: decl = `name = return NIL`. -#define BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_ASSIGN_PARSE_ARGS_( \ - decl, traits) \ - ( \ - BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - decl \ - )) \ - ) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/return/type.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/return/type.hpp deleted file mode 100644 index da95bf2..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion/return/type.hpp +++ /dev/null @@ -1,29 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_TYPE_HPP_ -#define BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_TYPE_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/type.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/preprocessor/tuple/elem.hpp> - -/* PUBLIC */ - -// Expand to `auto | (type,,,)` (this should never be empty). -#define BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_TYPE(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_RETURN_ASSERTION_TYPE, \ - traits \ - )() - -// Precondition: decl = `{auto | wrapped-type} ...`. -#define BOOST_CONTRACT_EXT_PP_RETURN_ASSERTION_TRAITS_TYPE_PARSE_D(d, \ - decl_traits) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_PUSH_BACK( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D(d, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/typedef.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/typedef.hpp deleted file mode 100644 index 2a4ea30..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion/typedef.hpp +++ /dev/null @@ -1,25 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_HPP_ -#define BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/assertion/typedef/new_name.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/typedef/name.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/key.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> - -/* PUBLIC */ - -// ASSERTION_TRAITS_KEY(traits) expands to `typedef` for this assertion. - -// Precondition: decl = `typedef wrapped-type new-name`. -#define BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_PARSE_D(d, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_NEW_NAME_PARSE( \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_NAME_PARSE_D(d, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE(typedef, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - ))))) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/typedef/name.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/typedef/name.hpp deleted file mode 100644 index dbaf911..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion/typedef/name.hpp +++ /dev/null @@ -1,32 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_NAME_HPP_ -#define BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_NAME_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/type.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/typedef.hpp> -#include <boost/preprocessor/tuple/elem.hpp> - -/* PUBLIC */ - -// Expand to `(type,,,)`. -#define BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_NAME(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_TYPEDEF_ASSERTION_NAME, \ - traits \ - ) - -// Precondition: decl = `typedef wrapped-type ...`. -#define BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_NAME_PARSE_D(d, \ - decl_traits) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_PUSH_BACK( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_PARSE_D(d, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TYPEDEF_REMOVE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - )(), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/typedef/new_name.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/typedef/new_name.hpp deleted file mode 100644 index 9dabbe2..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion/typedef/new_name.hpp +++ /dev/null @@ -1,38 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_NEW_NAME_HPP_ -#define BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_NEW_NAME_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/utility/nil.hpp> -#include <boost/preprocessor/facilities/expand.hpp> - -/* PUBLIC */ - -// Expand to `new-name`. -#define BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_NEW_NAME(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_TYPEDEF_ASSERTION_NEW_NAME, \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_NEW_NAME_PARSE( \ - decl_traits) \ - BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_NEW_NAME_PARSE_ARGS_ \ - decl_traits \ - ) - -/* PRIVATE */ - -// Precondition: decl = `name NIL`. -#define BOOST_CONTRACT_EXT_PP_TYPEDEF_ASSERTION_TRAITS_NEW_NAME_PARSE_ARGS_( \ - decl, traits) \ - ( \ - BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/using.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/using.hpp deleted file mode 100644 index b733a93..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion/using.hpp +++ /dev/null @@ -1,30 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_HPP_ -#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/assertion/using/name.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/using/new_name.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/using/namespace.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/using/template_params.hpp> -#include <boost/contract/ext_/preprocessor/traits/assertion/key.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> - -/* PUBLIC */ - -// ASSERTION_TRAITS_KEY(traits) expands to `using` for this assertion. - -// Precondition: decl = `[template( c++-template-parameter, ... )] -// using [namespace | (new-name) as] wrapped-name`. -#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_PARSE(decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAME_PARSE( \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NEW_NAME_PARSE( \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAMESPACE_PARSE( \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_TEMPLATE_PARAMS_PARSE( \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_SET_KEY_PARSE(using, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - ))))))) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/using/name.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/using/name.hpp deleted file mode 100644 index 68de876..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion/using/name.hpp +++ /dev/null @@ -1,41 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAME_HPP_ -#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAME_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/utility/nil.hpp> -#include <boost/contract/ext_/preprocessor/parenthesize.hpp> - -/* PUBLIC */ - -// Expand to `(name,,,)` (this name is wrapped within parenthesis because in -// general it can contain commas, for example for template aliases). -#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAME(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_USING_ASSERTION_NAME, \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAME_PARSE( \ - decl_traits) \ - BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAME_PARSE_ARGS_ \ - decl_traits \ - ) - -/* PRIVATE */ - -// Precondition: decl = `name NIL`. -#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAME_PARSE_ARGS_( \ - decl, traits) \ - ( \ - BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_CONTRACT_EXT_PP_PARENTHESIZE( \ - BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)) \ - ) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/using/namespace.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/using/namespace.hpp deleted file mode 100644 index 97e9de5..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion/using/namespace.hpp +++ /dev/null @@ -1,51 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAMESPACE_HPP_ -#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAMESPACE_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/namespace.hpp> -#include <boost/preprocessor/control/iif.hpp> -#include <boost/preprocessor/facilities/empty.hpp> - -/* PUBLIC */ - -// Expand to `namespace | EMPTY()`. -#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAMESPACE(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_USING_ASSERTION_NAMESPACE,\ - traits \ - )() - -#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAMESPACE_PARSE( \ - decl_traits) \ - BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAMESPACE_PARSE_ARGS_ \ - decl_traits \ - ) - -/* PRIVATE */ - -#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAMESPACE_PARSE_ARGS_( \ - decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NAMESPACE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAMESPACE_YES_ \ - , \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAMESPACE_NO_ \ - )(decl, traits) - -// Precondition: decl = `namespace ...`. -#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAMESPACE_YES_( \ - decl, traits) \ - ( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_NAMESPACE_REMOVE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - namespace BOOST_PP_EMPTY) \ - ) - -#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NAMESPACE_NO_( \ - decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/using/new_name.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/using/new_name.hpp deleted file mode 100644 index e8d5293..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion/using/new_name.hpp +++ /dev/null @@ -1,70 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NEW_NAME_HPP_ -#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NEW_NAME_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/contract/as.hpp> -#include <boost/contract/ext_/preprocessor/paren/has.hpp> -#include <boost/contract/ext_/preprocessor/paren/front.hpp> -#include <boost/preprocessor/tuple/eat.hpp> -#include <boost/preprocessor/tuple/rem.hpp> -#include <boost/preprocessor/control/iif.hpp> -#include <boost/preprocessor/facilities/empty.hpp> - -/* PUBLIC */ - -// Expand to `new-name | EMPTY()`. -#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NEW_NAME(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_USING_ASSERTION_NEW_NAME, \ - traits \ - )() - -#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NEW_NAME_PARSE( \ - decl_traits) \ - BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NEW_NAME_PARSE_ARGS_ \ - decl_traits \ - ) - -/* PRIVATE */ - -#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NEW_NAME_PARSE_ARGS_( \ - decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NEW_NAME_CHECK_ \ - , \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NEW_NAME_NO_ \ - )(decl, traits) - -// Precondition: decl = `(,,,) ...` (in general there could be commas in leading -// parenthesis if that is not a new-name). -#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NEW_NAME_CHECK_( \ - decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AS_FRONT( \ - BOOST_PP_TUPLE_EAT(0) decl), \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NEW_NAME_YES_ \ - , \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NEW_NAME_NO_ \ - )(decl, traits) - -// Precondition: decl = (new-name) as ...`. -#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NEW_NAME_YES_( \ - decl, traits) \ - ( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_AS_REMOVE_FRONT(BOOST_PP_TUPLE_EAT(1) \ - decl), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_REM_CTOR(1, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) BOOST_PP_EMPTY \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_NEW_NAME_NO_( \ - decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/assertion/using/template_params.hpp b/include/boost/contract/ext_/preprocessor/traits/assertion/using/template_params.hpp deleted file mode 100644 index fe81e2f..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/assertion/using/template_params.hpp +++ /dev/null @@ -1,65 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_TEMPLATE_PARAMS_HPP_ -#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_TEMPLATE_PARAMS_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/template.hpp> -#include <boost/contract/ext_/preprocessor/keyword/using.hpp> -#include <boost/contract/ext_/preprocessor/paren/front.hpp> -#include <boost/preprocessor/control/iif.hpp> -#include <boost/preprocessor/tuple/eat.hpp> - -/* PUBLIC */ - -// Expand to `(c++-template-parameters,,,) | EMPTY()`. -#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_TEMPLATE_PARAMS(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_USING_ASSERTION_TEMPLATE_PARAMS,\ - traits \ - )() - -// Precondition: decl = `[template(,,,)] using ...`. -#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_TEMPLATE_PARAMS_PARSE( \ - decl_traits) \ - BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_TEMPLATE_PARAMS_ARGS_ \ - decl_traits \ - ) - -/* PRIVATE */ - -#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_TEMPLATE_PARAMS_ARGS_( \ - decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TEMPLATE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_TEMPLATE_PARAMS_YES_ \ - , \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_TEMPLATE_PARAMS_NO_ \ - )(decl, traits) - -// Precondition: decl = `template( c++-template-parameter, ... ) using ...`. -#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_TEMPLATE_PARAMS_YES_( \ - decl, traits) \ - BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_TEMPLATE_PARAMS_( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_REMOVE_FRONT(decl), traits) - -// Precondition: decl = `using ...`. -#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_TEMPLATE_PARAMS_NO_( \ - decl, traits) \ - ( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_USING_REMOVE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY) \ - ) - -// Precondition: decl = `( c++-template-parameter, ... ) using ...`. -#define BOOST_CONTRACT_EXT_PP_USING_ASSERTION_TRAITS_TEMPLATE_PARAMS_( \ - decl, traits) \ - ( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_USING_REMOVE_FRONT( \ - BOOST_PP_TUPLE_EAT(0) decl), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl) BOOST_PP_EMPTY) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/aux_/adt.hpp b/include/boost/contract/ext_/preprocessor/traits/aux_/adt.hpp deleted file mode 100644 index 5057ce5..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/aux_/adt.hpp +++ /dev/null @@ -1,78 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ADT_HPP_ -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ADT_HPP_ - -#include <boost/preprocessor/seq/pop_front.hpp> -#include <boost/preprocessor/seq/elem.hpp> -#include <boost/preprocessor/seq/pop_back.hpp> -#include <boost/preprocessor/seq/size.hpp> -#include <boost/preprocessor/arithmetic/dec.hpp> - -// Abstract Data Type (ADT) used to internally represent pp-traits. -// In theory, it is possible to change traits representation just changing -// these macros however Boost.Preprocessor docs say that pp-seq are the -// fastest (always close to random access performance because they use -// iteration instead of recursion) and largest (up to 256 elements) data -// structure so there should be no reason to change representation from pp-seq. - -// WARNING: PP_TUPLE_ELEM does not handle EMPTY() elements. Therefore, it is -// necessary to always postfix decl with NIL, (NIL), etc. (for declaration -// tokens, sequences, etc.) and to never apply DONE(traits) while these are -// elements inside decl_traits = (decl, triats) 2-tuple (or other pp-tuples). - -// NOTE: In this library PARSE macros are so that: -// * PARSE(...) all expand to 2-tuple `(remaining-decl, parsed-traits)`. -// * PARSE(decl) starts parsing declaration tokens (init. decl_traits). -// * PARSE(decl_seq) start parsing pp-seq of declarations (init. decl_traits). -// * PARSE(decl_traits) interim parsing of declarations (no init. decl_traits). -// Users will often only need to explicitly call the FUNC_TRAITS_PARSE and -// CLASS_TRAITS_PARSE macros directly (other PARSE macro are called internally). -// Some PARSE macros (e.g., from in aux_/) do no parse multiple traits but only -// a single trait so they do not use the PP_TRAITS macros below but just report -// trait as tokens (this is documented by these macros). - -/* PUBLIC */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT (BOOST_PP_NIL) - -// Usage: DONE(traits) (could expand to EMPTY()). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE BOOST_PP_SEQ_POP_FRONT - -// Usage: ELEM(index, traits) -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM BOOST_PP_SEQ_ELEM - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, trait) \ - traits (trait) - -// Usage: POP_BACK(taits) -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK BOOST_PP_SEQ_POP_BACK - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits) \ - BOOST_PP_SEQ_ELEM(BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(traits)), traits) - -// NOTE: These DECL_TRAITS macros are provided for convenience only (but use -// them whenever possible instead of the TRAITS_INIT, TRAITS_DONE, etc. macros -// above so to make your code more readable and compact). -// These DECL_TRAITS macros cannot alter `decl` so they just pass that -// parameter throw (because the format of `decl` is up to the user, sometime -// it is a pp-seq, sometimes just tokens, etc.). - -#define BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT(decl) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT) - -#define BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE(decl_traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(2, 1, \ - decl_traits)) \ - ) - -#define BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_PUSH_BACK(decl_trait, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_trait), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_trait)) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp b/include/boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp deleted file mode 100644 index a3d2164..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/aux_/index/assertion.hpp +++ /dev/null @@ -1,39 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_ASSERTION_HPP_ -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_ASSERTION_HPP_ - -// WARNING: These index values must match parsing order (see assertion.hpp). - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_ASSERTION_KEY 0 - -// All indexes below start from 1 (0 taken by "key", common to all assertions). - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_BOOL_ASSERTION_EXPR 1 - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CONST_ASSERTION_CAPTURES 1 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CONST_ASSERTION_EXPR 2 - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_IF_ASSERTION_COND 1 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_IF_ASSERTION_THENS 2 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_IF_ASSERTION_ELSES 3 - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_RETURN_ASSERTION_TYPE 1 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_RETURN_ASSERTION_ASSIGN 2 - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_OLDOF_ASSERTION_EXPR 1 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_OLDOF_ASSERTION_TYPE 2 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_OLDOF_ASSERTION_ASSIGN 3 - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_NAMESPACE_ASSERTION_NEW_NAME 1 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_NAMESPACE_ASSERTION_NAME 2 - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_USING_ASSERTION_TEMPLATE_PARAMS 1 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_USING_ASSERTION_NAMESPACE 2 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_USING_ASSERTION_NEW_NAME 3 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_USING_ASSERTION_NAME 4 - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_TYPEDEF_ASSERTION_NAME 1 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_TYPEDEF_ASSERTION_NEW_NAME 2 - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/aux_/index/base.hpp b/include/boost/contract/ext_/preprocessor/traits/aux_/index/base.hpp deleted file mode 100644 index 6ba7ca9..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/aux_/index/base.hpp +++ /dev/null @@ -1,12 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_BASE_HPP_ -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_BASE_HPP_ - -// WARNING: These index values must match parsing oder (see base.hpp). - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_BASE_ACCESS 0 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_BASE_VIRTUAL 1 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_BASE_TYPE 2 - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/aux_/index/capture.hpp b/include/boost/contract/ext_/preprocessor/traits/aux_/index/capture.hpp deleted file mode 100644 index 9517a03..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/aux_/index/capture.hpp +++ /dev/null @@ -1,11 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CAPTURE_HPP_ -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CAPTURE_HPP_ - -// WARNING: These index values must match parsing oder (see capture.hpp). - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CAPTURE_TYPE 0 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CAPTURE_NAME 1 - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/aux_/index/class.hpp b/include/boost/contract/ext_/preprocessor/traits/aux_/index/class.hpp deleted file mode 100644 index 6d192cf..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/aux_/index/class.hpp +++ /dev/null @@ -1,31 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_HPP_ -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_HPP_ - -// WARNING: These index values must match parsing order (see class.hpp). - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_EXPORT 0 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_TEMPLATE 1 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_TEMPLATE_PARAMS 2 - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_FRIEND 3 - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_KEY 4 - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_VERBATIM 5 - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_NAME 6 - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_SPECIALIZATION 7 - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_FINAL 8 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_VIRT \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_FINAL - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_BASES 9 - -// Must be greater than all indexes (i.e., very last one). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_MAX 10 - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp b/include/boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp deleted file mode 100644 index 3a50a02..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp +++ /dev/null @@ -1,55 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_HPP_ -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_HPP_ - -// WARNING: These index values must match parsing order (see func.hpp). - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_ACCESS 0 - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_VERBATIM 1 - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_EXPORT 2 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_TEMPLATE 3 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_TEMPLATE_PARAMS 4 - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_INLINE 5 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_STATIC 6 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_EXTERN 7 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_EXPLICIT 8 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_VIRTUAL 9 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_FRIEND 10 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_CLASSIFIERS \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_FRIEND - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_RETURN 11 - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_OPERATOR_NAME 12 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_NAME 13 - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_PARAMS 14 - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_CONST 15 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_VOLATILE 16 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_CV \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_VOLATILE - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_REF 17 - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_EXCEPT 18 - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_TRAILING_RETURN 19 - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_FINAL 20 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_OVERRIDE 21 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_VIRT \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_OVERRIDE - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_PRECONDITIONS 22 - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_POSTCONDITIONS 23 - -// Must be greater than all indexes (i.e., very last one). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_MAX 24 - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/aux_/index/param.hpp b/include/boost/contract/ext_/preprocessor/traits/aux_/index/param.hpp deleted file mode 100644 index 3aa9fe2..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/aux_/index/param.hpp +++ /dev/null @@ -1,12 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_PARAM_HPP_ -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_PARAM_HPP_ - -// WARNING: Theses index values must match parsing oder (see param.hpp). - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_PARAM_TYPE 0 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_PARAM_NAME 1 -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_PARAM_DEFAULT 2 - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/aux_/keyword.hpp b/include/boost/contract/ext_/preprocessor/traits/aux_/keyword.hpp deleted file mode 100644 index ffb0f13..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/aux_/keyword.hpp +++ /dev/null @@ -1,66 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_KEYWORD_TRAITS_AUX_HPP_ -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRAITS_AUX_HPP_ - -#include <boost/preprocessor/control/iif.hpp> -#include <boost/preprocessor/facilities/empty.hpp> -#include <boost/preprocessor/facilities/expand.hpp> - -/* PUBLIC */ - -// Expand decl = `[keyword] ...` to `(..., [keyword] EMPTY)`. -// Precondition: `...` in decl cannot be EMPTY() (so expanded 2-tuple is valid). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD1_PARSE( \ - decl, \ - keyword1, is_keyword1_macro, remove_keyword1_macro \ -) \ - BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_ \ - BOOST_PP_IIF(is_keyword1_macro(decl), \ - (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_YES_, decl, \ - keyword1, remove_keyword1_macro) \ - , \ - (BOOST_CONTRACT_EXT_PP_KEYWORD_TRAITS_NO_, decl, ~, ~) \ - ) \ - ) - -// Expand decl = `[keyword] ...` to `(..., [keyword] EMTPY)`, where keyword can -// be one among 3 possible keywords. -// Precondition: `...` in decl cannot be EMPTY() (so expanded 2-tuple is valid). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD3_PARSE( \ - decl, \ - keyword1, is_keyword1_macro, remove_keyword1_macro, \ - keyword2, is_keyword2_macro, remove_keyword2_macro, \ - keyword3, is_keyword3_macro, remove_keyword3_macro \ -) \ - BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_ \ - BOOST_PP_IIF(is_keyword1_macro(decl), \ - (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_YES_, decl, \ - keyword1, remove_keyword1_macro) \ - , BOOST_PP_IIF(is_keyword2_macro(decl), \ - (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_YES_, decl, \ - keyword2, remove_keyword2_macro) \ - , BOOST_PP_IIF(is_keyword3_macro(decl), \ - (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_YES_, decl, \ - keyword3, remove_keyword3_macro) \ - , \ - (BOOST_CONTRACT_EXT_PP_KEYWORD_TRAITS_NO_, decl, ~, ~) \ - ))) \ - ) - -/* PRIVATE */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_(macro, _1, _2, _3) \ - macro(_1, _2, _3) - -// Precondition: decl = `keyword ...`. -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_YES_( \ - decl, keyword, remove_keyword_macro) \ - (remove_keyword_macro(decl), keyword BOOST_PP_EMPTY) - -#define BOOST_CONTRACT_EXT_PP_KEYWORD_TRAITS_NO_(decl, unsued1, unused2) \ - (decl, BOOST_PP_EMPTY) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/aux_/keyword_comb.hpp b/include/boost/contract/ext_/preprocessor/traits/aux_/keyword_comb.hpp deleted file mode 100644 index 6e661be..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/aux_/keyword_comb.hpp +++ /dev/null @@ -1,128 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_COMB_HPP_ -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_COMB_HPP_ - -#include <boost/preprocessor/control/iif.hpp> - -/* PUBLIC */ - -// Expand: -// decl = `keyword1 ...` to `(..., (1, 0))`. -// decl = `keyword2 ...` to `(..., (0, 1))`. -// decl = `keyword1 keyword2 ...` to `(..., (1, 1))`. -// decl = `keyword2 keyword1 ...` to `(..., (1, 1))`. -// decl = `...` to `(..., (0, 0))`. -// Precondition: `...` in decl cannot be EMPTY() (so expanded 2-tuple is valid). -// NOTE: There is no distinction between decl = `keyword1 keyword2 ...` and -// decl = `keyword2 keyword1 ...` as they both expand to trait `(1, 1)` (e.g., -// this is OK because in C++ `const volatile` and `volatile const` are both -// allowed syntactically but they represent the same thing semantically so -// there is no need to differentiate them). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_PARSE( \ - decl, \ - is_keyword1_macro, remove_keyword1_macro, \ - is_keyword2_macro, remove_keyword2_macro \ -) \ - BOOST_PP_IIF(is_keyword1_macro(decl), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_1_YES_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_1_NO_ \ - )( \ - decl, \ - is_keyword1_macro, remove_keyword1_macro, \ - is_keyword2_macro, remove_keyword2_macro \ - ) - -/* PRIVATE */ - -// Precondition: decl = `keyword1 ...`. -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_1_YES_( \ - decl, \ - is_keyword1_macro, remove_keyword1_macro, \ - is_keyword2_macro, remove_keyword2_macro \ -) \ - BOOST_PP_IIF( \ - is_keyword2_macro(remove_keyword1_macro(decl)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_1_2_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_1_ \ - )( \ - decl, \ - is_keyword1_macro, remove_keyword1_macro, \ - is_keyword2_macro, remove_keyword2_macro \ - ) -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_1_NO_( \ - decl, \ - is_keyword1_macro, remove_keyword1_macro, \ - is_keyword2_macro, remove_keyword2_macro \ -) \ - BOOST_PP_IIF(is_keyword2_macro(decl), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_2_YES_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_NONE_ \ - )( \ - decl, \ - is_keyword1_macro, remove_keyword1_macro, \ - is_keyword2_macro, remove_keyword2_macro \ - ) - -// Precondition: decl = `keyword2 ...` -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_2_YES_( \ - decl, \ - is_keyword1_macro, remove_keyword1_macro, \ - is_keyword2_macro, remove_keyword2_macro \ -) \ - BOOST_PP_IIF( \ - is_keyword1_macro(remove_keyword2_macro(decl)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_2_1_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_2_ \ - )( \ - decl, \ - is_keyword1_macro, remove_keyword1_macro, \ - is_keyword2_macro, remove_keyword2_macro \ - ) - -// Precondition: decl = `...`. -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_NONE_( \ - decl, \ - is_keyword1_macro, remove_keyword1_macro, \ - is_keyword2_macro, remove_keyword2_macro \ -) \ - (decl, (0, 0)) - -// Precondition: decl = `keyword2 keyword1 ...`. -// This produces `(1, 1)` as case above (so it cannot be diff. from case above). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_2_1_( \ - decl, \ - is_keyword1_macro, remove_keyword1_macro, \ - is_keyword2_macro, remove_keyword2_macro \ -) \ - (remove_keyword1_macro(remove_keyword2_macro(decl)), (1, 1)) - -// Precondition: decl = `keyword1 keyword2 ...`. -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_1_2_( \ - decl, \ - is_keyword1_macro, remove_keyword1_macro, \ - is_keyword2_macro, remove_keyword2_macro \ -) \ - (remove_keyword2_macro(remove_keyword1_macro(decl)), (1, 1)) - -// Precondition: decl = `keyword2 ...`. -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_2_( \ - decl, \ - is_keyword1_macro, remove_keyword1_macro, \ - is_keyword2_macro, remove_keyword2_macro \ -) \ - (remove_keyword2_macro(decl), (0, 1)) - -// Precondition: decl = `keyword1 ...`. -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_1_( \ - decl, \ - is_keyword1_macro, remove_keyword1_macro, \ - is_keyword2_macro, remove_keyword2_macro \ -) \ - (remove_keyword1_macro(decl), (1, 0)) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/aux_/keyword_list.hpp b/include/boost/contract/ext_/preprocessor/traits/aux_/keyword_list.hpp deleted file mode 100644 index 1d44bd4..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/aux_/keyword_list.hpp +++ /dev/null @@ -1,83 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_HPP_ -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/paren/front.hpp> -#include <boost/preprocessor/tuple/eat.hpp> -#include <boost/preprocessor/control/iif.hpp> -#include <boost/preprocessor/facilities/empty.hpp> - -/* PUBLIC */ - -// Expand `[keyword(,,,)] ...` to decl `...` and append traits with -// `[keyword] EMPTY` (but only if keyword macro param below != EMPTY()) always -// followed by `list_parse_macro(,,,)`. -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_PARSE_D(d, decl_traits, \ - keyword, is_keyword_macro, remove_keyword_macro, list_parse_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_PARSE_ARGS_(d, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits), \ - keyword, \ - is_keyword_macro, \ - remove_keyword_macro, \ - list_parse_macro \ - ) - -// Precondition: decl = `(,,,) ...` from `[keyword](,,,) ...` originally in -// decl (keyword can be EMPTY() to append only parsed list, see macro above). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_PUSH_BACK_PARSE_D( \ - d, decl, traits, keyword, list_parse_macro) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(keyword), \ - traits BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK \ - )(traits, keyword BOOST_PP_EMPTY), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_EXPAND_TRAITS_( \ - list_parse_macro(d, BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) \ - ) - -/* PRIVATE */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_PARSE_ARGS_( \ - d, decl, traits, \ - keyword, is_keyword_macro, remove_keyword_macro, list_parse_macro \ -) \ - BOOST_PP_IIF(is_keyword_macro(decl), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_YES_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_NO_ \ - )(d, decl, traits, keyword, remove_keyword_macro, list_parse_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_NO_( \ - d, decl, traits, keyword, remove_keyword_macro, list_parse_macro) \ - ( \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(keyword), \ - traits BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK \ - )(traits, BOOST_PP_EMPTY), \ - BOOST_PP_EMPTY \ - ) \ - ) - -// Precondition: decl = `keyword(,,,) ...`. -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_YES_( \ - d, decl, traits, keyword, remove_keyword_macro, list_parse_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_PUSH_BACK_PARSE_D(d, \ - remove_keyword_macro(decl), traits, keyword, list_parse_macro) - -// Extra level of indirection needed for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_EXPAND_TRAITS_( \ - decl_traits) \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/aux_/keyword_paren.hpp b/include/boost/contract/ext_/preprocessor/traits/aux_/keyword_paren.hpp deleted file mode 100644 index 0bc4043..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/aux_/keyword_paren.hpp +++ /dev/null @@ -1,46 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_HPP_ -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_HPP_ - -#include <boost/contract/ext_/preprocessor/paren/front.hpp> -#include <boost/preprocessor/tuple/eat.hpp> -#include <boost/preprocessor/control/iif.hpp> - -/* PUBLIC */ - -// Expand decl = `[keyword[(,,,)]] ...` to `(..., [(,,,)] EMPTY)`. -// Precondition: `...` in decl cannot be EMPTY() (so expanded 2-tuple is valid). -// NOTE: Both keyword without (,,,) and no keyword at all expand to EMPTY trait. -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_PARSE( \ - decl, is_keyword_macro, remove_keyword_macro) \ - BOOST_PP_IIF(is_keyword_macro(decl), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_NO_ \ - )(decl, remove_keyword_macro) - -/* PRIVATE */ - -// Precondition: decl = `keyword ...` -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_( \ - decl, remove_keyword_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_CHECK_( \ - remove_keyword_macro(decl)) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_CHECK_(decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_YES_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_NO_ \ - )(decl, ~) - -// Precondition: decl = `(,,,) ...`. -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_YES_(decl, unused) \ - (BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl) BOOST_PP_EMPTY) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_NO_(decl, unused) \ - (decl, BOOST_PP_EMPTY) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/aux_/list-generate.py b/include/boost/contract/ext_/preprocessor/traits/aux_/list-generate.py deleted file mode 100644 index 0ef7fbd..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/aux_/list-generate.py +++ /dev/null @@ -1,246 +0,0 @@ - -import os -import sys - -LIMIT = 64 - -def code(): - result = '' - for i in range(1, LIMIT + 1): - result = result + ''' -/* PUBLIC ({0}) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_{0}( \\ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \\ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_{0}_(d, \\ - 0, \\ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \\ - parse_elem_macro, \\ - is_replacement_macro, \\ - replace_elem_macro \\ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_{0}( \\ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \\ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_{0}_(d, \\ - 1, \\ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \\ - parse_elem_macro, \\ - is_replacement_macro, \\ - replace_elem_macro \\ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_{0}( \\ - d, decl, parse_elem_macro) \\ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_{0}_(d, \\ - 0, \\ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \\ - parse_elem_macro, \\ - 0 BOOST_PP_TUPLE_EAT(3), \\ - BOOST_PP_NIL \\ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_{0}( \\ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \\ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_{0}_(d, \\ - 0, \\ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \\ - parse_elem_macro, \\ - is_replacement_macro, \\ - replace_elem_macro \\ - ) - -/* PRIVATE ({0}) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_{0}_(d, allow_void, \\ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \\ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \\ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \\ - , BOOST_PP_IIF(allow_void, \\ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_{0}_ \\ - , \\ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_{0}_ \\ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_{0}_(d, decl_seq, \\ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \\ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \\ - BOOST_PP_SEQ_HEAD(decl_seq)), \\ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \\ - , \\ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_{0}_ \\ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_{0}_(d, decl_seq, \\ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \\ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_{0}_( \\ - BOOST_PP_WHILE_ ## d( \\ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_{0}_, \\ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_{0}_, \\ - ( \\ - decl_seq (BOOST_PP_NIL), \\ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \\ - parse_elem_macro, \\ - is_replacement_macro, \\ - replace_elem_macro \\ - ) \\ - ) \\ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_{0}_( \\ - decl_traits_parse_is_replace) \\ - ( \\ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \\ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \\ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \\ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_{0}_( \\ - d, decl_traits_parse_is_replace) \\ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \\ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_{0}_( \\ - d, decl_traits_parse_is_replace) \\ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_{0}_(d, \\ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \\ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \\ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \\ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \\ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \\ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_{0}_(d, decl_seq, \\ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \\ - BOOST_PP_IIF(is_replacement_macro(d, {1}, BOOST_PP_SEQ_HEAD(decl_seq)), \\ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_{0}_ \\ - , \\ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_{0}_ \\ - )(d, decl_seq, traits, \\ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_{0}_(d, decl_seq, \\ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \\ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_{0}_(d, \\ - BOOST_PP_SEQ_TAIL(decl_seq), \\ - traits, \\ - parse_elem_macro(d, {1}, BOOST_PP_SEQ_HEAD(decl_seq)), \\ - parse_elem_macro, \\ - is_replacement_macro, \\ - replace_elem_macro \\ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_{0}_(d, decl_seq, \\ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \\ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_{0}_(d, \\ - BOOST_PP_SEQ_TAIL(decl_seq), \\ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \\ - replace_elem_macro(d, {1}, (BOOST_PP_SEQ_HEAD(decl_seq), \\ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \\ - parse_elem_macro, \\ - is_replacement_macro, \\ - replace_elem_macro \\ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_{0}_(d, \\ - decl_seq, traits, elemdecl_elemtraits, \\ - parse_elem_macro, is_replacement_macro, replace_elem_macro \\ -) \\ - ( \\ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \\ - 2, 0, elemdecl_elemtraits)), \\ - decl_seq BOOST_PP_TUPLE_EAT(2) \\ - , \\ - BOOST_PP_SEQ_PUSH_FRONT \\ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \\ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \\ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \\ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \\ - parse_elem_macro, \\ - is_replacement_macro, \\ - replace_elem_macro \\ - ) -'''.format(i, i + 1) - return result - -script = os.path.basename(sys.argv[0]) -path = sys.argv[0].replace('-generate.py', '', 1) + ".hpp" -file = open(path, 'w') -file.write(''' -#ifndef BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HPP_ -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "{0}". - -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/void.hpp> -#include <boost/contract/ext_/preprocessor/utility/empty.hpp> -#include <boost/contract/ext_/preprocessor/variadic/to_seq.hpp> -#include <boost/contract/ext_/preprocessor/variadic/enum_to_seq.hpp> -#include <boost/preprocessor/comparison/not_equal.hpp> -#include <boost/preprocessor/seq/seq.hpp> -#include <boost/preprocessor/seq/size.hpp> -#include <boost/preprocessor/seq/push_front.hpp> -#include <boost/preprocessor/tuple/elem.hpp> -#include <boost/preprocessor/tuple/eat.hpp> - -/* PUBLIC */ - -// Maximum number of nested lists that can be parsed (before pp errors). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_LIMIT {1} - -// Usage: -// ..._LIST_PARSE_D_ ## l(d, decl, parse_elem_macro, is_replacement_macro, -// replace_elem_macro) -// Expand decl = `( ,,, ) | ( )` (pp-tuple or empty tuple) to `[pp-seq] EMPTY` -// of element traits as parsed by `parse_elem_macro(d, l, decl)`, or replaced -// by `replace_elem_macro(d, l, decl)` when `is_replacement_macro(d, l, decl)` -// expands to 1. -// Expand to `EMPTY` if decl is empty tuple `( )`. -// Expanded pp-seq of traits to be inspected using ..._TRAITS macros associated -// to parse_elem_macro and replace_elem_macro. -// Note: no-void, yes-replace, no-enum (e.g., for template params). - -// Usage: -// ..._VOID_LIST_PARSE_D_ ## l(d, decl, parse_elem_macro, -// is_replacement_macro, replace_elem_macro) -// Expand decl = `( ,,, ) | ( ) | ( void )` (pp-tuple, empty tuple, or void -// tuple) to `[pp-seq] EMPTY` of element traits as parsed by -// `parse_elem_macro(d, l, decl)`, or replaced by -// `replace_elem_macro(d, l, decl)` when `is_replacement_macro(d, l, decl)` -// expand to 1. -// Expand to `EMPTY` if decl is empty `( )` or void `( void )` tuple. -// Expanded pp-seq of traits to be inspected using ..._TRAITS macros associated -// to parse_elem_macro and replace_elem_macro. -// Note: yes-void, yes-replace, no-enum (e.g., for function params). - -// Usage: -// ..._FIXED_LIST_PARSE_D_ ## l(d, decl, parse_elem_macro) -// Expand decl = `( ,,, ) | ( )` (pp-tuple or empty tuple) to `[pp-seq] EMPTY` -// of element traits as parsed by `parse_elem_macro(d, l, decl)`. -// Expand to `EMPTY` if decl is empty tuple `( )`. -// Expanded pp-seq of traits to be inspected using ..._TRAITS macros associated -// to parse_elem_macro. -// Note: no-void, no-replace, no-enum (e.g., for captures). - -// Usage: -// ..._ENUM_LIST_PARSE_D_ ## l(d, decl, parse_elem_macro, -// is_replacement_macro, replace_elem_macro) -// Expand decl = `( ,,, [,] ) | ( )` (pp-tuple, or enumeration tuple with extra -// trailing comma `,`, or empty tuple) to `[pp-seq] EMPTY` of element traits as -// parsed by `parse_elem_macro(d, l, decl)`, or replaced by -// `replace_elem_macro(d, l, decl)` when `is_replacement_macro(d, l, decl)` -// expands to 1. -// Expand to `EMPTY` if decl is empty tuple `( )`. -// Expanded pp-seq of traits to be inspected using ..._TRAITS macros associated -// to parse_elem_macro and replace_elem_macro. -// Note: no-void, yes-replace, yes-enum (e.g., for assertions). -{2} -#endif // #include guard - -'''.format(script, LIMIT, code())) -file.close() -print "Written:", path - diff --git a/include/boost/contract/ext_/preprocessor/traits/aux_/list.hpp b/include/boost/contract/ext_/preprocessor/traits/aux_/list.hpp deleted file mode 100644 index b78dc49..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/aux_/list.hpp +++ /dev/null @@ -1,9929 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HPP_ -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HPP_ - -// WARNING: FILE AUTOMATICALLY GENERATED, DO NOT MODIFY IT! -// Instead, modify and run related generation script "list-generate.py". - -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/void.hpp> -#include <boost/contract/ext_/preprocessor/utility/empty.hpp> -#include <boost/contract/ext_/preprocessor/variadic/to_seq.hpp> -#include <boost/contract/ext_/preprocessor/variadic/enum_to_seq.hpp> -#include <boost/preprocessor/comparison/not_equal.hpp> -#include <boost/preprocessor/seq/seq.hpp> -#include <boost/preprocessor/seq/size.hpp> -#include <boost/preprocessor/seq/push_front.hpp> -#include <boost/preprocessor/tuple/elem.hpp> -#include <boost/preprocessor/tuple/eat.hpp> - -/* PUBLIC */ - -// Maximum number of nested lists that can be parsed (before pp errors). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_LIMIT 64 - -// Usage: -// ..._LIST_PARSE_D_ ## l(d, decl, parse_elem_macro, is_replacement_macro, -// replace_elem_macro) -// Expand decl = `( ,,, ) | ( )` (pp-tuple or empty tuple) to `[pp-seq] EMPTY` -// of element traits as parsed by `parse_elem_macro(d, l, decl)`, or replaced -// by `replace_elem_macro(d, l, decl)` when `is_replacement_macro(d, l, decl)` -// expands to 1. -// Expand to `EMPTY` if decl is empty tuple `( )`. -// Expanded pp-seq of traits to be inspected using ..._TRAITS macros associated -// to parse_elem_macro and replace_elem_macro. -// Note: no-void, yes-replace, no-enum (e.g., for template params). - -// Usage: -// ..._VOID_LIST_PARSE_D_ ## l(d, decl, parse_elem_macro, -// is_replacement_macro, replace_elem_macro) -// Expand decl = `( ,,, ) | ( ) | ( void )` (pp-tuple, empty tuple, or void -// tuple) to `[pp-seq] EMPTY` of element traits as parsed by -// `parse_elem_macro(d, l, decl)`, or replaced by -// `replace_elem_macro(d, l, decl)` when `is_replacement_macro(d, l, decl)` -// expand to 1. -// Expand to `EMPTY` if decl is empty `( )` or void `( void )` tuple. -// Expanded pp-seq of traits to be inspected using ..._TRAITS macros associated -// to parse_elem_macro and replace_elem_macro. -// Note: yes-void, yes-replace, no-enum (e.g., for function params). - -// Usage: -// ..._FIXED_LIST_PARSE_D_ ## l(d, decl, parse_elem_macro) -// Expand decl = `( ,,, ) | ( )` (pp-tuple or empty tuple) to `[pp-seq] EMPTY` -// of element traits as parsed by `parse_elem_macro(d, l, decl)`. -// Expand to `EMPTY` if decl is empty tuple `( )`. -// Expanded pp-seq of traits to be inspected using ..._TRAITS macros associated -// to parse_elem_macro. -// Note: no-void, no-replace, no-enum (e.g., for captures). - -// Usage: -// ..._ENUM_LIST_PARSE_D_ ## l(d, decl, parse_elem_macro, -// is_replacement_macro, replace_elem_macro) -// Expand decl = `( ,,, [,] ) | ( )` (pp-tuple, or enumeration tuple with extra -// trailing comma `,`, or empty tuple) to `[pp-seq] EMPTY` of element traits as -// parsed by `parse_elem_macro(d, l, decl)`, or replaced by -// `replace_elem_macro(d, l, decl)` when `is_replacement_macro(d, l, decl)` -// expands to 1. -// Expand to `EMPTY` if decl is empty tuple `( )`. -// Expanded pp-seq of traits to be inspected using ..._TRAITS macros associated -// to parse_elem_macro and replace_elem_macro. -// Note: no-void, yes-replace, yes-enum (e.g., for assertions). - -/* PUBLIC (1) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_1( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_1_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_1( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_1_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_1( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_1_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_1( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_1_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (1) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_1_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_1_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_1_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_1_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_1_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_1_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_1_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_1_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_1_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_1_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_1_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_1_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_1_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_1_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 2, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_1_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_1_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_1_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_1_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 2, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_1_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_1_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 2, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_1_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (2) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_2( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_2_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_2( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_2_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_2( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_2_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_2( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_2_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (2) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_2_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_2_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_2_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_2_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_2_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_2_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_2_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_2_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_2_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_2_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_2_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_2_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_2_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_2_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 3, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_2_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_2_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_2_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_2_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 3, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_2_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_2_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 3, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_2_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (3) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_3( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_3_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_3( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_3_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_3( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_3_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_3( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_3_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (3) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_3_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_3_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_3_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_3_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_3_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_3_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_3_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_3_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_3_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_3_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_3_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_3_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_3_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_3_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 4, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_3_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_3_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_3_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_3_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 4, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_3_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_3_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 4, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_3_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (4) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_4( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_4_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_4( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_4_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_4( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_4_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_4( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_4_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (4) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_4_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_4_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_4_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_4_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_4_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_4_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_4_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_4_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_4_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_4_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_4_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_4_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_4_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_4_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 5, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_4_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_4_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_4_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_4_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 5, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_4_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_4_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 5, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_4_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (5) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_5( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_5_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_5( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_5_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_5( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_5_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_5( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_5_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (5) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_5_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_5_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_5_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_5_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_5_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_5_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_5_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_5_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_5_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_5_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_5_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_5_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_5_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_5_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 6, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_5_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_5_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_5_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_5_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 6, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_5_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_5_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 6, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_5_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (6) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_6( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_6_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_6( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_6_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_6( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_6_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_6( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_6_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (6) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_6_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_6_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_6_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_6_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_6_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_6_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_6_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_6_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_6_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_6_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_6_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_6_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_6_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_6_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 7, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_6_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_6_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_6_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_6_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 7, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_6_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_6_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 7, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_6_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (7) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_7( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_7_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_7( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_7_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_7( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_7_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_7( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_7_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (7) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_7_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_7_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_7_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_7_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_7_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_7_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_7_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_7_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_7_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_7_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_7_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_7_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_7_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_7_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 8, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_7_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_7_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_7_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_7_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 8, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_7_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_7_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 8, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_7_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (8) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_8( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_8_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_8( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_8_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_8( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_8_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_8( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_8_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (8) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_8_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_8_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_8_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_8_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_8_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_8_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_8_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_8_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_8_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_8_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_8_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_8_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_8_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_8_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 9, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_8_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_8_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_8_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_8_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 9, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_8_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_8_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 9, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_8_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (9) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_9( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_9_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_9( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_9_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_9( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_9_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_9( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_9_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (9) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_9_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_9_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_9_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_9_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_9_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_9_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_9_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_9_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_9_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_9_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_9_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_9_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_9_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_9_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 10, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_9_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_9_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_9_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_9_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 10, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_9_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_9_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 10, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_9_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (10) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_10( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_10_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_10( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_10_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_10( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_10_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_10( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_10_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (10) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_10_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_10_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_10_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_10_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_10_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_10_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_10_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_10_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_10_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_10_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_10_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_10_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_10_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_10_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 11, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_10_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_10_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_10_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_10_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 11, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_10_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_10_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 11, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_10_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (11) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_11( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_11_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_11( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_11_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_11( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_11_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_11( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_11_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (11) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_11_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_11_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_11_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_11_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_11_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_11_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_11_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_11_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_11_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_11_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_11_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_11_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_11_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_11_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 12, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_11_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_11_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_11_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_11_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 12, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_11_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_11_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 12, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_11_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (12) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_12( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_12_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_12( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_12_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_12( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_12_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_12( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_12_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (12) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_12_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_12_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_12_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_12_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_12_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_12_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_12_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_12_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_12_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_12_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_12_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_12_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_12_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_12_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 13, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_12_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_12_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_12_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_12_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 13, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_12_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_12_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 13, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_12_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (13) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_13( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_13_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_13( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_13_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_13( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_13_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_13( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_13_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (13) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_13_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_13_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_13_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_13_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_13_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_13_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_13_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_13_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_13_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_13_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_13_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_13_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_13_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_13_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 14, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_13_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_13_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_13_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_13_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 14, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_13_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_13_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 14, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_13_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (14) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_14( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_14_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_14( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_14_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_14( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_14_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_14( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_14_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (14) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_14_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_14_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_14_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_14_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_14_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_14_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_14_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_14_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_14_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_14_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_14_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_14_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_14_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_14_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 15, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_14_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_14_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_14_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_14_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 15, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_14_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_14_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 15, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_14_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (15) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_15( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_15_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_15( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_15_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_15( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_15_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_15( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_15_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (15) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_15_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_15_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_15_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_15_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_15_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_15_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_15_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_15_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_15_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_15_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_15_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_15_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_15_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_15_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 16, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_15_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_15_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_15_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_15_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 16, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_15_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_15_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 16, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_15_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (16) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_16( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_16_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_16( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_16_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_16( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_16_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_16( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_16_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (16) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_16_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_16_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_16_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_16_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_16_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_16_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_16_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_16_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_16_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_16_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_16_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_16_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_16_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_16_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 17, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_16_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_16_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_16_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_16_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 17, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_16_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_16_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 17, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_16_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (17) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_17( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_17_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_17( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_17_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_17( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_17_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_17( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_17_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (17) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_17_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_17_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_17_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_17_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_17_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_17_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_17_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_17_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_17_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_17_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_17_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_17_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_17_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_17_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 18, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_17_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_17_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_17_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_17_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 18, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_17_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_17_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 18, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_17_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (18) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_18( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_18_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_18( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_18_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_18( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_18_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_18( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_18_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (18) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_18_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_18_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_18_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_18_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_18_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_18_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_18_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_18_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_18_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_18_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_18_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_18_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_18_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_18_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 19, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_18_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_18_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_18_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_18_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 19, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_18_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_18_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 19, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_18_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (19) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_19( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_19_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_19( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_19_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_19( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_19_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_19( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_19_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (19) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_19_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_19_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_19_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_19_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_19_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_19_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_19_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_19_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_19_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_19_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_19_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_19_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_19_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_19_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 20, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_19_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_19_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_19_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_19_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 20, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_19_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_19_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 20, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_19_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (20) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_20( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_20_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_20( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_20_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_20( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_20_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_20( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_20_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (20) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_20_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_20_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_20_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_20_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_20_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_20_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_20_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_20_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_20_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_20_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_20_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_20_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_20_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_20_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 21, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_20_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_20_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_20_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_20_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 21, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_20_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_20_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 21, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_20_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (21) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_21( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_21_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_21( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_21_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_21( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_21_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_21( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_21_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (21) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_21_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_21_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_21_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_21_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_21_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_21_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_21_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_21_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_21_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_21_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_21_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_21_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_21_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_21_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 22, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_21_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_21_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_21_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_21_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 22, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_21_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_21_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 22, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_21_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (22) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_22( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_22_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_22( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_22_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_22( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_22_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_22( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_22_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (22) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_22_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_22_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_22_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_22_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_22_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_22_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_22_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_22_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_22_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_22_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_22_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_22_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_22_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_22_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 23, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_22_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_22_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_22_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_22_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 23, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_22_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_22_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 23, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_22_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (23) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_23( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_23_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_23( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_23_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_23( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_23_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_23( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_23_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (23) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_23_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_23_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_23_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_23_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_23_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_23_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_23_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_23_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_23_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_23_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_23_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_23_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_23_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_23_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 24, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_23_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_23_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_23_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_23_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 24, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_23_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_23_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 24, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_23_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (24) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_24( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_24_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_24( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_24_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_24( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_24_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_24( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_24_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (24) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_24_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_24_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_24_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_24_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_24_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_24_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_24_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_24_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_24_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_24_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_24_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_24_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_24_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_24_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 25, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_24_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_24_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_24_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_24_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 25, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_24_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_24_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 25, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_24_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (25) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_25( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_25_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_25( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_25_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_25( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_25_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_25( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_25_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (25) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_25_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_25_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_25_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_25_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_25_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_25_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_25_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_25_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_25_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_25_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_25_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_25_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_25_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_25_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 26, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_25_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_25_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_25_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_25_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 26, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_25_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_25_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 26, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_25_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (26) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_26( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_26_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_26( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_26_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_26( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_26_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_26( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_26_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (26) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_26_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_26_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_26_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_26_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_26_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_26_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_26_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_26_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_26_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_26_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_26_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_26_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_26_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_26_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 27, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_26_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_26_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_26_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_26_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 27, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_26_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_26_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 27, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_26_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (27) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_27( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_27_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_27( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_27_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_27( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_27_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_27( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_27_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (27) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_27_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_27_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_27_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_27_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_27_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_27_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_27_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_27_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_27_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_27_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_27_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_27_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_27_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_27_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 28, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_27_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_27_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_27_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_27_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 28, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_27_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_27_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 28, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_27_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (28) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_28( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_28_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_28( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_28_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_28( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_28_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_28( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_28_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (28) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_28_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_28_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_28_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_28_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_28_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_28_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_28_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_28_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_28_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_28_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_28_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_28_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_28_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_28_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 29, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_28_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_28_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_28_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_28_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 29, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_28_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_28_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 29, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_28_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (29) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_29( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_29_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_29( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_29_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_29( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_29_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_29( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_29_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (29) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_29_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_29_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_29_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_29_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_29_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_29_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_29_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_29_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_29_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_29_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_29_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_29_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_29_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_29_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 30, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_29_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_29_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_29_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_29_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 30, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_29_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_29_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 30, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_29_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (30) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_30( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_30_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_30( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_30_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_30( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_30_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_30( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_30_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (30) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_30_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_30_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_30_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_30_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_30_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_30_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_30_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_30_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_30_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_30_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_30_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_30_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_30_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_30_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 31, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_30_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_30_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_30_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_30_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 31, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_30_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_30_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 31, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_30_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (31) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_31( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_31_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_31( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_31_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_31( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_31_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_31( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_31_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (31) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_31_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_31_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_31_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_31_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_31_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_31_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_31_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_31_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_31_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_31_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_31_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_31_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_31_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_31_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 32, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_31_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_31_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_31_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_31_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 32, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_31_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_31_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 32, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_31_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (32) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_32( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_32_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_32( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_32_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_32( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_32_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_32( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_32_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (32) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_32_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_32_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_32_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_32_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_32_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_32_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_32_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_32_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_32_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_32_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_32_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_32_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_32_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_32_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 33, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_32_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_32_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_32_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_32_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 33, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_32_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_32_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 33, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_32_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (33) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_33( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_33_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_33( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_33_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_33( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_33_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_33( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_33_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (33) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_33_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_33_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_33_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_33_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_33_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_33_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_33_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_33_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_33_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_33_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_33_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_33_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_33_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_33_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 34, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_33_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_33_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_33_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_33_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 34, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_33_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_33_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 34, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_33_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (34) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_34( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_34_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_34( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_34_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_34( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_34_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_34( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_34_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (34) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_34_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_34_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_34_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_34_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_34_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_34_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_34_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_34_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_34_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_34_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_34_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_34_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_34_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_34_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 35, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_34_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_34_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_34_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_34_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 35, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_34_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_34_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 35, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_34_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (35) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_35( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_35_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_35( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_35_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_35( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_35_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_35( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_35_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (35) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_35_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_35_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_35_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_35_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_35_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_35_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_35_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_35_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_35_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_35_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_35_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_35_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_35_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_35_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 36, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_35_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_35_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_35_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_35_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 36, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_35_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_35_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 36, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_35_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (36) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_36( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_36_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_36( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_36_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_36( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_36_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_36( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_36_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (36) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_36_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_36_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_36_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_36_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_36_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_36_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_36_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_36_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_36_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_36_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_36_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_36_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_36_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_36_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 37, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_36_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_36_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_36_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_36_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 37, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_36_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_36_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 37, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_36_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (37) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_37( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_37_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_37( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_37_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_37( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_37_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_37( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_37_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (37) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_37_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_37_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_37_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_37_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_37_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_37_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_37_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_37_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_37_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_37_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_37_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_37_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_37_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_37_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 38, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_37_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_37_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_37_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_37_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 38, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_37_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_37_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 38, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_37_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (38) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_38( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_38_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_38( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_38_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_38( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_38_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_38( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_38_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (38) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_38_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_38_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_38_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_38_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_38_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_38_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_38_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_38_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_38_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_38_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_38_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_38_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_38_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_38_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 39, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_38_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_38_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_38_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_38_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 39, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_38_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_38_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 39, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_38_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (39) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_39( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_39_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_39( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_39_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_39( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_39_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_39( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_39_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (39) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_39_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_39_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_39_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_39_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_39_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_39_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_39_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_39_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_39_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_39_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_39_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_39_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_39_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_39_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 40, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_39_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_39_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_39_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_39_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 40, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_39_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_39_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 40, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_39_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (40) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_40( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_40_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_40( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_40_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_40( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_40_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_40( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_40_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (40) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_40_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_40_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_40_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_40_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_40_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_40_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_40_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_40_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_40_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_40_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_40_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_40_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_40_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_40_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 41, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_40_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_40_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_40_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_40_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 41, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_40_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_40_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 41, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_40_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (41) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_41( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_41_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_41( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_41_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_41( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_41_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_41( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_41_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (41) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_41_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_41_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_41_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_41_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_41_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_41_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_41_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_41_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_41_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_41_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_41_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_41_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_41_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_41_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 42, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_41_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_41_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_41_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_41_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 42, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_41_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_41_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 42, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_41_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (42) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_42( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_42_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_42( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_42_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_42( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_42_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_42( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_42_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (42) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_42_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_42_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_42_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_42_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_42_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_42_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_42_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_42_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_42_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_42_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_42_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_42_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_42_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_42_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 43, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_42_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_42_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_42_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_42_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 43, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_42_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_42_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 43, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_42_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (43) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_43( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_43_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_43( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_43_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_43( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_43_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_43( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_43_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (43) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_43_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_43_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_43_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_43_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_43_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_43_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_43_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_43_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_43_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_43_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_43_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_43_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_43_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_43_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 44, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_43_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_43_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_43_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_43_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 44, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_43_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_43_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 44, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_43_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (44) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_44( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_44_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_44( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_44_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_44( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_44_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_44( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_44_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (44) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_44_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_44_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_44_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_44_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_44_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_44_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_44_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_44_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_44_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_44_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_44_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_44_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_44_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_44_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 45, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_44_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_44_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_44_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_44_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 45, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_44_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_44_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 45, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_44_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (45) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_45( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_45_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_45( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_45_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_45( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_45_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_45( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_45_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (45) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_45_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_45_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_45_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_45_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_45_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_45_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_45_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_45_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_45_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_45_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_45_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_45_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_45_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_45_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 46, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_45_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_45_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_45_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_45_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 46, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_45_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_45_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 46, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_45_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (46) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_46( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_46_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_46( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_46_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_46( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_46_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_46( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_46_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (46) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_46_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_46_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_46_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_46_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_46_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_46_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_46_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_46_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_46_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_46_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_46_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_46_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_46_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_46_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 47, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_46_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_46_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_46_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_46_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 47, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_46_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_46_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 47, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_46_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (47) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_47( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_47_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_47( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_47_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_47( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_47_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_47( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_47_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (47) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_47_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_47_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_47_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_47_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_47_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_47_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_47_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_47_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_47_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_47_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_47_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_47_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_47_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_47_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 48, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_47_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_47_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_47_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_47_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 48, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_47_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_47_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 48, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_47_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (48) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_48( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_48_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_48( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_48_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_48( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_48_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_48( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_48_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (48) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_48_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_48_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_48_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_48_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_48_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_48_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_48_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_48_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_48_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_48_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_48_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_48_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_48_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_48_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 49, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_48_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_48_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_48_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_48_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 49, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_48_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_48_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 49, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_48_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (49) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_49( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_49_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_49( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_49_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_49( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_49_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_49( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_49_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (49) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_49_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_49_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_49_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_49_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_49_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_49_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_49_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_49_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_49_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_49_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_49_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_49_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_49_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_49_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 50, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_49_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_49_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_49_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_49_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 50, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_49_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_49_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 50, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_49_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (50) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_50( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_50_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_50( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_50_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_50( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_50_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_50( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_50_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (50) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_50_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_50_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_50_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_50_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_50_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_50_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_50_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_50_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_50_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_50_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_50_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_50_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_50_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_50_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 51, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_50_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_50_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_50_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_50_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 51, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_50_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_50_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 51, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_50_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (51) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_51( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_51_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_51( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_51_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_51( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_51_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_51( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_51_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (51) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_51_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_51_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_51_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_51_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_51_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_51_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_51_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_51_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_51_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_51_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_51_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_51_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_51_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_51_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 52, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_51_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_51_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_51_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_51_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 52, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_51_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_51_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 52, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_51_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (52) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_52( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_52_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_52( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_52_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_52( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_52_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_52( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_52_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (52) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_52_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_52_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_52_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_52_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_52_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_52_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_52_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_52_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_52_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_52_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_52_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_52_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_52_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_52_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 53, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_52_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_52_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_52_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_52_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 53, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_52_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_52_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 53, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_52_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (53) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_53( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_53_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_53( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_53_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_53( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_53_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_53( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_53_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (53) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_53_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_53_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_53_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_53_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_53_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_53_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_53_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_53_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_53_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_53_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_53_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_53_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_53_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_53_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 54, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_53_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_53_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_53_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_53_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 54, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_53_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_53_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 54, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_53_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (54) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_54( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_54_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_54( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_54_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_54( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_54_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_54( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_54_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (54) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_54_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_54_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_54_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_54_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_54_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_54_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_54_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_54_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_54_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_54_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_54_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_54_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_54_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_54_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 55, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_54_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_54_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_54_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_54_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 55, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_54_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_54_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 55, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_54_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (55) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_55( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_55_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_55( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_55_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_55( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_55_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_55( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_55_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (55) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_55_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_55_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_55_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_55_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_55_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_55_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_55_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_55_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_55_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_55_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_55_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_55_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_55_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_55_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 56, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_55_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_55_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_55_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_55_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 56, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_55_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_55_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 56, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_55_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (56) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_56( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_56_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_56( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_56_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_56( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_56_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_56( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_56_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (56) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_56_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_56_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_56_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_56_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_56_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_56_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_56_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_56_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_56_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_56_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_56_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_56_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_56_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_56_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 57, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_56_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_56_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_56_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_56_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 57, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_56_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_56_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 57, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_56_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (57) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_57( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_57_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_57( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_57_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_57( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_57_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_57( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_57_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (57) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_57_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_57_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_57_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_57_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_57_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_57_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_57_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_57_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_57_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_57_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_57_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_57_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_57_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_57_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 58, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_57_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_57_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_57_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_57_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 58, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_57_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_57_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 58, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_57_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (58) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_58( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_58_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_58( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_58_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_58( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_58_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_58( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_58_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (58) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_58_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_58_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_58_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_58_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_58_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_58_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_58_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_58_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_58_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_58_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_58_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_58_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_58_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_58_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 59, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_58_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_58_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_58_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_58_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 59, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_58_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_58_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 59, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_58_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (59) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_59( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_59_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_59( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_59_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_59( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_59_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_59( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_59_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (59) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_59_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_59_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_59_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_59_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_59_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_59_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_59_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_59_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_59_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_59_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_59_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_59_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_59_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_59_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 60, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_59_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_59_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_59_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_59_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 60, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_59_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_59_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 60, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_59_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (60) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_60( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_60_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_60( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_60_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_60( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_60_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_60( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_60_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (60) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_60_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_60_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_60_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_60_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_60_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_60_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_60_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_60_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_60_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_60_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_60_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_60_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_60_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_60_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 61, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_60_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_60_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_60_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_60_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 61, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_60_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_60_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 61, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_60_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (61) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_61( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_61_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_61( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_61_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_61( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_61_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_61( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_61_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (61) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_61_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_61_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_61_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_61_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_61_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_61_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_61_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_61_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_61_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_61_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_61_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_61_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_61_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_61_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 62, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_61_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_61_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_61_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_61_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 62, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_61_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_61_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 62, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_61_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (62) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_62( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_62_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_62( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_62_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_62( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_62_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_62( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_62_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (62) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_62_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_62_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_62_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_62_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_62_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_62_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_62_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_62_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_62_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_62_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_62_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_62_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_62_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_62_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 63, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_62_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_62_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_62_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_62_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 63, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_62_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_62_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 63, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_62_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (63) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_63( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_63_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_63( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_63_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_63( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_63_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_63( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_63_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (63) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_63_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_63_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_63_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_63_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_63_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_63_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_63_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_63_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_63_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_63_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_63_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_63_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_63_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_63_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 64, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_63_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_63_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_63_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_63_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 64, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_63_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_63_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 64, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_63_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PUBLIC (64) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_64( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_64_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_64( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_64_(d, \ - 1, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_64( \ - d, decl, parse_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_64_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ decl, \ - parse_elem_macro, \ - 0 BOOST_PP_TUPLE_EAT(3), \ - BOOST_PP_NIL \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_64( \ - d, decl, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_64_(d, \ - 0, \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ decl, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -/* PRIVATE (64) */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_64_(d, allow_void, \ - decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(decl_seq), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , BOOST_PP_IIF(allow_void, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_64_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_64_ \ - ))(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -// Precondition: decl_seq is a valid pp-seq, so decl_seq != EMPTY(). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_HANDLE_VOID_64_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT( \ - BOOST_PP_SEQ_HEAD(decl_seq)), \ - ((BOOST_PP_NIL), BOOST_PP_EMPTY) BOOST_PP_TUPLE_EAT(5) \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_64_ \ - )(d, decl_seq, parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_64_(d, decl_seq, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_64_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_64_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_64_, \ - ( \ - decl_seq (BOOST_PP_NIL), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INIT, \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_RETURN_64_( \ - decl_traits_parse_is_replace) \ - ( \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_DONE(BOOST_PP_TUPLE_ELEM(5, 1, \ - decl_traits_parse_is_replace)) BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PRED_64_( \ - d, decl_traits_parse_is_replace) \ - BOOST_PP_NOT_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM( \ - 5, 0, decl_traits_parse_is_replace)), 1) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_64_( \ - d, decl_traits_parse_is_replace) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_64_(d, \ - BOOST_PP_TUPLE_ELEM(5, 0, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 1, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 2, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 3, decl_traits_parse_is_replace), \ - BOOST_PP_TUPLE_ELEM(5, 4, decl_traits_parse_is_replace) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_OP_ARGS_64_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_PP_IIF(is_replacement_macro(d, 65, BOOST_PP_SEQ_HEAD(decl_seq)), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_64_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_64_ \ - )(d, decl_seq, traits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_PARSE_64_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_64_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - traits, \ - parse_elem_macro(d, 65, BOOST_PP_SEQ_HEAD(decl_seq)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_ELEM_REPLACE_64_(d, decl_seq, \ - traits, parse_elem_macro, is_replacement_macro, replace_elem_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_64_(d, \ - BOOST_PP_SEQ_TAIL(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK(traits), \ - replace_elem_macro(d, 65, (BOOST_PP_SEQ_HEAD(decl_seq), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_BACK(traits))), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PUSH_BACK_64_(d, \ - decl_seq, traits, elemdecl_elemtraits, \ - parse_elem_macro, is_replacement_macro, replace_elem_macro \ -) \ - ( \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(BOOST_PP_TUPLE_ELEM( \ - 2, 0, elemdecl_elemtraits)), \ - decl_seq BOOST_PP_TUPLE_EAT(2) \ - , \ - BOOST_PP_SEQ_PUSH_FRONT \ - )(decl_seq, BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, elemdecl_elemtraits))), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, elemdecl_elemtraits)), \ - parse_elem_macro, \ - is_replacement_macro, \ - replace_elem_macro \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/aux_/type.hpp b/include/boost/contract/ext_/preprocessor/traits/aux_/type.hpp deleted file mode 100644 index 0457b55..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/aux_/type.hpp +++ /dev/null @@ -1,262 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_HPP_ -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_HPP_ - -#include <boost/contract/ext_/preprocessor/keyword/auto.hpp> -#include <boost/contract/ext_/preprocessor/keyword/register.hpp> -#include <boost/contract/ext_/preprocessor/keyword/const.hpp> -#include <boost/contract/ext_/preprocessor/keyword/volatile.hpp> -#include <boost/contract/ext_/preprocessor/keyword/long.hpp> -#include <boost/contract/ext_/preprocessor/keyword/short.hpp> -#include <boost/contract/ext_/preprocessor/keyword/signed.hpp> -#include <boost/contract/ext_/preprocessor/keyword/unsigned.hpp> -#include <boost/contract/ext_/preprocessor/keyword/void.hpp> -#include <boost/contract/ext_/preprocessor/keyword/bool.hpp> -#include <boost/contract/ext_/preprocessor/keyword/char.hpp> -#include <boost/contract/ext_/preprocessor/keyword/char16_t.hpp> -#include <boost/contract/ext_/preprocessor/keyword/char32_t.hpp> -#include <boost/contract/ext_/preprocessor/keyword/int.hpp> -#include <boost/contract/ext_/preprocessor/keyword/wchar_t.hpp> -#include <boost/contract/ext_/preprocessor/keyword/float.hpp> -#include <boost/contract/ext_/preprocessor/keyword/double.hpp> -#include <boost/contract/ext_/preprocessor/keyword/decltype.hpp> -#include <boost/contract/ext_/preprocessor/paren/has.hpp> -#include <boost/contract/ext_/preprocessor/paren/front.hpp> -#include <boost/contract/ext_/preprocessor/utility/nil.hpp> -#include <boost/preprocessor/control/iif.hpp> -#include <boost/preprocessor/control/while.hpp> -#include <boost/preprocessor/tuple/elem.hpp> -#include <boost/preprocessor/tuple/eat.hpp> -#include <boost/preprocessor/facilities/empty.hpp> -#include <boost/preprocessor/facilities/expand.hpp> - -/* PUBLIC */ - -// Expand decl = `[type | (type)] ...` (type can also be `void`) to -// `(..., [(type)] EMPTY)`. -// For example, expand: -// decl = `int const ...` to `(..., (int const) EMPTY)`. -// decl = `(map<T, U>) ...` to `(..., (map<T, U>) EMPTY)`. -// decl = `auto ...` to `(..., (auto) EMPTY)`. -// decl = `f ...` to `(f ..., EMPTY)`. -// Precondition: `...` in decl cannot be EMPTY() (so expanded 2-tuple is valid). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_PARSE_D(d, decl) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_D_(d, decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_SPACED_PUSH_BACK_) - -// Expand decl = `[auto | type | (type)] ...` (type can also be `void`) to -// `(..., [auto | (type)] EMPTY)` (note that auto not wrapped in parenthesis). -// For example, expand: -// decl = `int const ...` to `(..., (int const) EMPTY)`. -// decl = `(map<T, U>) ...` to `(..., (map<T, U>) EMPTY)`. -// decl = `auto ...` to `(..., auto EMPTY)`. -// decl = `f ...` to `(f ..., EMPTY)`. -// Precondition: `...` in decl cannot be EMPTY() (so expanded 2-tuple is valid). -// NOTE: So far, there is no need of a SEQ version of this macro. -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D(d, decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT( \ - decl), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_PARSE_D \ - )(d, decl) - -// Expand decl = `[type | (type)] ...` (type can also be `void`) to -// `(..., [((keyword1))...((keyword-n))] EMTPY)` (this is useful to access -// single type keywords `int`, `const`, etc.). -// For example, expand: -// decl = `int const ...` to `(..., ((int)) ((const)) EMPTY)`. -// decl = `(map<T, U>) ...` to `(..., ((map<T, U>)) EMPTY)`. -// decl = `auto ...` to `(..., ((auto)) EMPTY)`. -// decl = `f ...` to `(f ..., EMPTY)`. -// Precondition: `...` in decl cannot be EMPTY() (so expanded 2-tuple is valid). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_SEQ_PARSE_D(d, decl) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_SEQ_RETURN_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_D_(d, decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_SEQ_PUSH_BACK_) \ - ) - -/* PRIVATE */ - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_SPACED_PUSH_BACK_( \ - spaced_type, trait) \ - spaced_type trait - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_SEQ_PUSH_BACK_(type_seq, trait) \ - type_seq ((trait)) - -// Precondition: decl = `auto ...`. -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_(unused, decl) \ - (BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_REMOVE_FRONT(decl), auto BOOST_PP_EMPTY) - -// Extra level of indirection needed for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_SEQ_RETURN_(decl_type) \ - BOOST_PP_EXPAND(BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_SEQ_RETURN_ARGS_ \ - decl_type) - -// Remove an extra set of parenthesis around sequence (originally added to -// handle commas by algorithms in common with spaced type traits). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_SEQ_RETURN_ARGS_(decl, type) \ - ( \ - decl, \ - BOOST_PP_EXPR_IIF(BOOST_PP_COMPL(BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - type())), \ - BOOST_PP_TUPLE_REM(1) \ - ) \ - type \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_D_(d, decl, push_back_macro) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_PAREN_D_ \ - , \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_D_ \ - )(d, decl, push_back_macro) - -// Precondition: decl = `(...) ...`. -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_PAREN_D_( \ - d, decl, push_back_macro) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - push_back_macro(BOOST_PP_EMPTY(), \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - BOOST_PP_EMPTY \ - ) - -// Precondition: decl does not start with paren (it's formed by keywords). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_D_( \ - d, decl, push_back_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_RETURN_( \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_PRED_, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_OP_, \ - (1, decl, BOOST_PP_NIL, push_back_macro) \ - ) \ - ) - -// Do not return continue_ and wrap type in paren (so same as paren type). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_RETURN_( \ - continue_decl_type_push) \ - ( \ - BOOST_PP_TUPLE_ELEM(4, 1, continue_decl_type_push), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_PARENTHESIZE_( \ - BOOST_CONTRACT_EXT_PP_NIL_REMOVE_FRONT( \ - BOOST_PP_TUPLE_ELEM(4, 2, continue_decl_type_push)) \ - ) \ - BOOST_PP_EMPTY \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_PARENTHESIZE_(tokens) \ - BOOST_PP_EXPR_IIF(BOOST_PP_COMPL(BOOST_CONTRACT_EXT_PP_IS_EMPTY(tokens)), \ - (tokens) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_PRED_( \ - d, continue_decl_type_push) \ - BOOST_PP_TUPLE_ELEM(4, 0, continue_decl_type_push) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_OP_( \ - d, continue_decl_type_push) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_OP_ARGS_(d, \ - BOOST_PP_TUPLE_ELEM(4, 1, continue_decl_type_push), \ - BOOST_PP_TUPLE_ELEM(4, 2, continue_decl_type_push), \ - BOOST_PP_TUPLE_ELEM(4, 3, continue_decl_type_push) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_OP_ARGS_( \ - d, decl, type, push_back_macro) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_( \ - d, \ - decl, \ - type, \ - push_back_macro, \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_AUTO_FRONT(decl), \ - (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \ - auto, BOOST_CONTRACT_EXT_PP_KEYWORD_AUTO_REMOVE_FRONT) \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_REGISTER_FRONT(decl), \ - (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \ - register, BOOST_CONTRACT_EXT_PP_KEYWORD_REGISTER_REMOVE_FRONT) \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT(decl), \ - (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \ - const, BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_REMOVE_FRONT) \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOLATILE_FRONT(decl), \ - (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \ - volatile, BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_REMOVE_FRONT) \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_LONG_FRONT(decl), \ - (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \ - long, BOOST_CONTRACT_EXT_PP_KEYWORD_LONG_REMOVE_FRONT) \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SHORT_FRONT(decl), \ - (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \ - short, BOOST_CONTRACT_EXT_PP_KEYWORD_SHORT_REMOVE_FRONT) \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_SIGNED_FRONT(decl), \ - (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \ - signed, BOOST_CONTRACT_EXT_PP_KEYWORD_SIGNED_REMOVE_FRONT) \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_UNSIGNED_FRONT(decl), \ - (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \ - unsigned, BOOST_CONTRACT_EXT_PP_KEYWORD_UNSIGNED_REMOVE_FRONT) \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOID_FRONT(decl), \ - (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \ - void, BOOST_CONTRACT_EXT_PP_KEYWORD_VOID_REMOVE_FRONT) \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_BOOL_FRONT(decl), \ - (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \ - bool, BOOST_CONTRACT_EXT_PP_KEYWORD_BOOL_REMOVE_FRONT) \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CHAR_FRONT(decl), \ - (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \ - char, BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR_REMOVE_FRONT) \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CHAR16_T_FRONT(decl), \ - (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \ - char16_t, BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR16_T_REMOVE_FRONT) \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CHAR32_T_FRONT(decl), \ - (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \ - char32_t, BOOST_CONTRACT_EXT_PP_KEYWORD_CHAR32_T_REMOVE_FRONT) \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_WCHAR_T_FRONT(decl), \ - (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \ - wchar_t, BOOST_CONTRACT_EXT_PP_KEYWORD_WCHAR_T_REMOVE_FRONT) \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_INT_FRONT(decl), \ - (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \ - int, BOOST_CONTRACT_EXT_PP_KEYWORD_INT_REMOVE_FRONT) \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FLOAT_FRONT(decl), \ - (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \ - float, BOOST_CONTRACT_EXT_PP_KEYWORD_FLOAT_REMOVE_FRONT) \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DOUBLE_FRONT(decl), \ - (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_, \ - double, BOOST_CONTRACT_EXT_PP_KEYWORD_DOUBLE_REMOVE_FRONT) \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DECLTYPE_FRONT(decl), \ - (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_PAREN_, \ - decltype, BOOST_CONTRACT_EXT_PP_KEYWORD_DECLTYPE_REMOVE_FRONT) \ - , \ - (BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_DONE_, ~, ~) \ - )))))))))))))))))) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_( \ - d, decl, type, push_back_macro, invoke_trait_remove) \ - BOOST_PP_TUPLE_ELEM(3, 0, invoke_trait_remove)(d, \ - decl, \ - type, \ - push_back_macro, \ - BOOST_PP_TUPLE_ELEM(3, 1, invoke_trait_remove), \ - BOOST_PP_TUPLE_ELEM(3, 2, invoke_trait_remove) \ - ) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_DONE_( \ - d, decl, type, push_back_macro, unused1, unused2) \ - (0, decl, type, push_back_macro) - -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_TRAIT_( \ - d, decl, type, push_back_macro, trait, remove_macro) \ - (1, remove_macro(decl), push_back_macro(type, trait), push_back_macro) - -// Precondition: decl = `trait(...) ...` (e.g., for `decltype(...) ...`). -#define BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_KEYWORD_PAREN_( \ - d, decl, type, push_back_macro, trait, remove_macro) \ - ( \ - 1, \ - BOOST_PP_TUPLE_EAT(0) remove_macro(decl), \ - push_back_macro(type, trait \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(remove_macro(decl))), \ - push_back_macro \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/base.hpp b/include/boost/contract/ext_/preprocessor/traits/base.hpp deleted file mode 100644 index c2b7346..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/base.hpp +++ /dev/null @@ -1,22 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_BASE_TRAITS_HPP_ -#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/base/type.hpp> -#include <boost/contract/ext_/preprocessor/traits/base/classifiers.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> - -/* PUBLIC */ - -// Precondition: decl = `{[public | protected | private] [virtual] | [virtual] -// [public | protected | private]} wrapped-type`. -#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_PARSE(decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_BASE_TRAITS_TYPE_PARSE( \ - BOOST_CONTRACT_EXT_PP_BASE_TRAITS_CLASSIFIERS_PARSE( \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/base/classifiers.hpp b/include/boost/contract/ext_/preprocessor/traits/base/classifiers.hpp deleted file mode 100644 index 7a08cbe..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/base/classifiers.hpp +++ /dev/null @@ -1,95 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_BASE_TRAITS_CLASSIFIERS_HPP_ -#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_CLASSIFIERS_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/base.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/keyword.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/virtual.hpp> -#include <boost/contract/ext_/preprocessor/keyword/private.hpp> -#include <boost/contract/ext_/preprocessor/keyword/protected.hpp> -#include <boost/contract/ext_/preprocessor/keyword/public.hpp> -#include <boost/preprocessor/control/iif.hpp> -#include <boost/preprocessor/facilities/empty.hpp> -#include <boost/preprocessor/facilities/expand.hpp> - -/* PUBLIC */ - -// Expand to `public | protected | private | EMPTY()`. -#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_ACCESS(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_BASE_ACCESS, traits)() - -// Expand to `virtual | EMPTY()`. -#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_BASE_VIRTUAL, traits)() - -// Implementation: Do NOT use EXPAND for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_CLASSIFIERS_PARSE(decl_traits) \ - BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL_1ST_CHECK_ decl_traits - -/* PRIVATE */ - -#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL_1ST_CHECK_(decl, traits)\ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VIRTUAL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL_1ST_YES_ \ - , \ - BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL_1ST_NO_ \ - )(decl, traits) - -// Precondition: decl = `virtual ...`. -#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL_1ST_YES_(decl, traits) \ - BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL_1ST_PUSH_BACK_ \ - BOOST_CONTRACT_EXT_PP_BASE_TRAITS_ACCESS_( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_VIRTUAL_REMOVE_FRONT(decl), \ - traits \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL_1ST_PUSH_BACK_(decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - virtual BOOST_PP_EMPTY)) - -#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL_1ST_NO_(decl, traits) \ - BOOST_PP_EXPAND(BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL_2ND_CHECK_ \ - BOOST_CONTRACT_EXT_PP_BASE_TRAITS_ACCESS_(decl, traits)) - -#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL_2ND_CHECK_(decl, traits)\ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VIRTUAL_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL_2ND_YES_ \ - , \ - BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL_2ND_NO_ \ - )(decl, traits) - -// Precondition: decl = `virtual ...`. -#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL_2ND_YES_(decl, traits) \ - ( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_VIRTUAL_REMOVE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - virtual BOOST_PP_EMPTY) \ - ) - -#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_VIRTUAL_2ND_NO_(decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_ACCESS_(decl, traits) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_PUSH_BACK( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD3_PARSE( \ - decl, \ - public, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_PUBLIC_FRONT, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_PUBLIC_REMOVE_FRONT, \ - protected, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_PROTECTED_FRONT, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_PROTECTED_REMOVE_FRONT, \ - private, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_PRIVATE_FRONT, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_PRIVATE_REMOVE_FRONT \ - ), \ - traits \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/base/type.hpp b/include/boost/contract/ext_/preprocessor/traits/base/type.hpp deleted file mode 100644 index b14464b..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/base/type.hpp +++ /dev/null @@ -1,41 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_BASE_TRAITS_TYPE_HPP_ -#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_TYPE_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/base.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/utility/nil.hpp> -#include <boost/contract/ext_/preprocessor/parenthesize.hpp> -#include <boost/preprocessor/tuple/rem.hpp> -#include <boost/preprocessor/facilities/expand.hpp> - -/* PUBLIC */ - -// Expand to `(,,,)`, for example: `(vector<T>)` or `(map<U, V>)`. -#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_TYPE(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_BASE_TYPE, traits) - -// Implementation: EXPAND and REM to force proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_TYPE_PARSE(decl_traits) \ - BOOST_CONTRACT_EXT_PP_BASE_TRAITS_TYPE_PARSE_EXPAND_( \ - (BOOST_PP_TUPLE_REM_CTOR(2, decl_traits))) - -/* PRIVATE */ - -#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_TYPE_PARSE_EXPAND_(decl_traits) \ - BOOST_PP_EXPAND(BOOST_CONTRACT_EXT_PP_BASE_TRAITS_TYPE_PARSE_ARGS_ \ - decl_traits) - -#define BOOST_CONTRACT_EXT_PP_BASE_TRAITS_TYPE_PARSE_ARGS_(decl, traits) \ - ( \ - BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_PARENTHESIZE( \ - BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(decl)) \ - ) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/capture.hpp b/include/boost/contract/ext_/preprocessor/traits/capture.hpp deleted file mode 100644 index 11fc953..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/capture.hpp +++ /dev/null @@ -1,22 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_CAPTURE_TRAITS_HPP_ -#define BOOST_CONTRACT_EXT_PP_CAPTURE_TRAITS_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/capture/name.hpp> -#include <boost/contract/ext_/preprocessor/traits/capture/type.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> - -/* PUBLIC */ - -// Precondition: decl = `[wrapped-type] name`. -#define BOOST_CONTRACT_EXT_PP_CAPTURE_TRAITS_PARSE_D_L(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_CAPTURE_TRAITS_NAME_PARSE( \ - BOOST_CONTRACT_EXT_PP_CAPTURE_TRAITS_TYPE_PARSE_D(d, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - )))) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/capture/name.hpp b/include/boost/contract/ext_/preprocessor/traits/capture/name.hpp deleted file mode 100644 index 8e48cdc..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/capture/name.hpp +++ /dev/null @@ -1,29 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_CAPTURE_TRAITS_NAME_HPP_ -#define BOOST_CONTRACT_EXT_PP_CAPTURE_TRAITS_NAME_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/capture.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/utility/nil.hpp> -#include <boost/preprocessor/tuple/elem.hpp> - -/* PUBLIC */ - -// Expand to `name | EMPTY()`. -#define BOOST_CONTRACT_EXT_PP_CAPTURE_TRAITS_NAME(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CAPTURE_NAME, traits) - -// Precondition: name must always be the last remaining token in decl. -#define BOOST_CONTRACT_EXT_PP_CAPTURE_TRAITS_NAME_PARSE(decl_traits) \ - ( \ - BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits), \ - BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - ) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/capture/type.hpp b/include/boost/contract/ext_/preprocessor/traits/capture/type.hpp deleted file mode 100644 index 0d86015..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/capture/type.hpp +++ /dev/null @@ -1,30 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_CAPTURE_TRAITS_TYPE_HPP_ -#define BOOST_CONTRACT_EXT_PP_CAPTURE_TRAITS_TYPE_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/capture.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/type.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/preprocessor/tuple/elem.hpp> -#include <boost/preprocessor/control/iif.hpp> -#include <boost/preprocessor/facilities/expand.hpp> - -/* PUBLIC */ - -// Expand to `(,,,) | EMPTY()`. -#define BOOST_CONTRACT_EXT_PP_CAPTURE_TRAITS_TYPE(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CAPTURE_TYPE, traits)() - - -// Precondition: decl = `[wrapped-type] ...`. -// Implementation: Trailing EMPTY already added by AUX_TYPE_PARSE. -#define BOOST_CONTRACT_EXT_PP_CAPTURE_TRAITS_TYPE_PARSE_D(d, decl_traits) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_PUSH_BACK( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_PARSE_D(d, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/class.hpp b/include/boost/contract/ext_/preprocessor/traits/class.hpp deleted file mode 100644 index 8415f35..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/class.hpp +++ /dev/null @@ -1,145 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_HPP_ -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/class/bases.hpp> -#include <boost/contract/ext_/preprocessor/traits/class/virt.hpp> -#include <boost/contract/ext_/preprocessor/traits/class/specialization.hpp> -#include <boost/contract/ext_/preprocessor/traits/class/name.hpp> -#include <boost/contract/ext_/preprocessor/traits/class/verbatim.hpp> -#include <boost/contract/ext_/preprocessor/traits/class/key.hpp> -#include <boost/contract/ext_/preprocessor/traits/class/friend.hpp> -#include <boost/contract/ext_/preprocessor/traits/class/template.hpp> -#include <boost/contract/ext_/preprocessor/traits/class/export.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/index/class.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> - -/* PUBLIC */ - -// Expand class declaration to `(remaining-declaration, parsed-traits)`. If -// there was no error, remaining declaration is `BOOST_PP_NIL`. Parsed traits -// can be inspected via the CLASS_TRAITS_... macros. -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_PARSE_D(d, decl) \ - BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_DONE_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_BASES_PARSE_(d, \ - BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_VIRT_PARSE_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_SPECIALIZATION_PARSE_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_NAME_PARSE_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_VERBATIM_PARSE_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_KEY_PARSE_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_FRIEND_PARSE_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_TEMPLATE_PARSE_(d, \ - BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_EXPORT_PARSE_( \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - ))))))))))) - -/* PRIVATE */ - -// To debug or test the pp parsing code, #define this internal macro to stop -// parsing at a given trait index as #defined in aux_/index/class.hpp: -// #define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST ... - -#if defined(BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST) && \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST < \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_MAX -# define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_DONE_(decl_traits) \ - decl_traits -#else -# define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_DONE_ \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE -#endif - -#if defined(BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST) && \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST < \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_EXPORT -# define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_EXPORT_PARSE_(decl_traits) \ - decl_traits -#else -# define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_EXPORT_PARSE_ \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_EXPORT_PARSE -#endif - -#if defined(BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST) && \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST < \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_TEMPLATE -# define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_TEMPLATE_PARSE_(d, decl_traits) \ - decl_traits -#else -# define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_TEMPLATE_PARSE_ \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE_PARSE_D -#endif - -#if defined(BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST) && \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST < \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_FRIEND -# define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_FRIEND_PARSE_(decl_traits) \ - decl_traits -#else -# define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_FRIEND_PARSE_ \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_FRIEND_PARSE -#endif - -#if defined(BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST) && \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST < \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_KEY -# define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_KEY_PARSE_(decl_traits) \ - decl_traits -#else -# define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_KEY_PARSE_ \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_KEY_PARSE -#endif - -#if defined(BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST) && \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST < \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_VERBATIM -# define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_VERBATIM_PARSE_(decl_traits) \ - decl_traits -#else -# define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_VERBATIM_PARSE_ \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_VERBATIM_PARSE -#endif - -#if defined(BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST) && \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST < \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_NAME -# define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_NAME_PARSE_(decl_traits) \ - decl_traits -#else -# define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_NAME_PARSE_ \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_NAME_PARSE -#endif - -#if defined(BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST) && \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST < \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_SPECIALIZATION -# define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_SPECIALIZATION_PARSE_( \ - decl_traits) \ - decl_traits -#else -# define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_SPECIALIZATION_PARSE_ \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_SPECIALIZATION_PARSE -#endif - -#if defined(BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST) && \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST < \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_VIRT -# define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_VIRT_PARSE_(decl_traits) \ - decl_traits -#else -# define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_VIRT_PARSE_ \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_VIRT_PARSE -#endif - -#if defined(BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST) && \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_AUX_INDEX_TEST < \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_BASES -# define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_BASES_PARSE_(d, decl_traits) \ - decl_traits -#else -# define BOOST_CONTRACT_EXT_PP_TRAITS_CLASS_BASES_PARSE_ \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_BASES_PARSE_D -#endif - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/class/bases.hpp b/include/boost/contract/ext_/preprocessor/traits/class/bases.hpp deleted file mode 100644 index b90b89f..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/class/bases.hpp +++ /dev/null @@ -1,42 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_BASES_HPP_ -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_BASES_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/base.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/index/class.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/keyword_list.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/list.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/contract/extends.hpp> -#include <boost/preprocessor/facilities/empty.hpp> - -/* PUBLIC */ - -// Expand to EMPTY() if no base class, otherwise expand to pp-seq of base class -// traits (each pp-seq elem. to be inspected via BASE_TRAITS). -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_BASES(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_BASES, traits)() - -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_BASES_PARSE_D(d, decl_traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_PARSE_D(d, \ - decl_traits, \ - BOOST_PP_EMPTY(), \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXTENDS_FRONT, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_EXTENDS_REMOVE_FRONT, \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_BASES_ \ - ) - -/* PRIVATE */ - -// Precondition: decl = `(,,,) ...` from `extends(,,,) ...` originally in decl. -// This macro will also parse `(,,,)` into a pp-seq of base traits. -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_BASES_(d, decl) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_FIXED_LIST_PARSE_D_1(d, decl, \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_BASE_PARSE_) - -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_BASE_PARSE_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_BASE_TRAITS_PARSE(decl) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/class/export.hpp b/include/boost/contract/ext_/preprocessor/traits/class/export.hpp deleted file mode 100644 index 0ded356..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/class/export.hpp +++ /dev/null @@ -1,34 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_EXPORT_HPP_ -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_EXPORT_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/class.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/keyword.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/export.hpp> -#include <boost/preprocessor/tuple/elem.hpp> - -// NOTE: The `export` keyword for templates was deprecated in C++11 but it is -// still supported here for compliance and compatibility with C++03. - -/* PUBLIC */ - -// Expand to `export | EMPTY()`. -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_EXPORT(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_EXPORT, traits)() - -// Implementation: Trailing EMPTY already put by KEYWORD1. -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_EXPORT_PARSE(decl_traits) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_PUSH_BACK( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD1_PARSE( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - export, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXPORT_FRONT, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_REMOVE_FRONT \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/class/friend.hpp b/include/boost/contract/ext_/preprocessor/traits/class/friend.hpp deleted file mode 100644 index adbfb8c..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/class/friend.hpp +++ /dev/null @@ -1,31 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_FRIEND_HPP_ -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_FRIEND_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/class.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/keyword.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/friend.hpp> -#include <boost/preprocessor/tuple/elem.hpp> - -/* PUBLIC */ - -// Expand to `friend | EMPTY()`. -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_FRIEND(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_FRIEND, traits)() - -// Implementation: Trailing EMPTY already put by KEYWORD1. -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_FRIEND_PARSE(decl_traits) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_PUSH_BACK( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD1_PARSE( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - friend, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FRIEND_FRONT, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_REMOVE_FRONT \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/class/key.hpp b/include/boost/contract/ext_/preprocessor/traits/class/key.hpp deleted file mode 100644 index 2b337e1..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/class/key.hpp +++ /dev/null @@ -1,49 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_KEY_HPP_ -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_KEY_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/class.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/class.hpp> -#include <boost/contract/ext_/preprocessor/keyword/struct.hpp> -#include <boost/preprocessor/control/iif.hpp> -#include <boost/preprocessor/facilities/expand.hpp> - -/* PUBLIC */ - -// Expand to `class | struct` (cannot be empty). -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_KEY(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_KEY, traits) - -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_KEY_PARSE(decl_traits) \ - BOOST_PP_EXPAND(BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_KEY_PARSE_ARGS_ \ - decl_traits) - -/* PRIVATE */ - -// Implementation: If decl does not start with `class`, it must (and therefore -// it is here assumed to) start with `struct` (otherwise pp errors). -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_KEY_PARSE_ARGS_(decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CLASS_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_KEY_CLASS_ \ - , \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_KEY_STRUCT_ \ - )(decl, traits) - -// Precondition: decl = `class ...`. -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_KEY_CLASS_(decl, traits) \ - ( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_REMOVE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, class) \ - ) - -// Precondition: decl = `struct ...`. -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_KEY_STRUCT_(decl, traits) \ - ( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_STRUCT_REMOVE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, struct) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/class/name.hpp b/include/boost/contract/ext_/preprocessor/traits/class/name.hpp deleted file mode 100644 index c9dc519..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/class/name.hpp +++ /dev/null @@ -1,37 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_NAME_HPP_ -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_NAME_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/class.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/paren/front.hpp> -#include <boost/preprocessor/tuple/eat.hpp> -#include <boost/preprocessor/tuple/rem.hpp> -#include <boost/preprocessor/facilities/expand.hpp> - -/* PUBLIC */ - -// Expand to `name`. -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_NAME(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_NAME, traits) - -// Precondition: decl = `(name) ...`. -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_NAME_PARSE(decl_traits) \ - BOOST_PP_EXPAND(BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_NAME_PARSE_ARGS_ \ - decl_traits) - -/* PRIVATE */ - -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_NAME_PARSE_ARGS_(decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(1) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_REM_CTOR(1, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/class/specialization.hpp b/include/boost/contract/ext_/preprocessor/traits/class/specialization.hpp deleted file mode 100644 index 591c98f..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/class/specialization.hpp +++ /dev/null @@ -1,49 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_SPECIALIZATION_HPP_ -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_SPECIALIZATION_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/class.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/paren/front.hpp> -#include <boost/preprocessor/tuple/eat.hpp> -#include <boost/preprocessor/control/iif.hpp> -#include <boost/preprocessor/facilities/empty.hpp> -#include <boost/preprocessor/facilities/expand.hpp> - -/* PUBLIC */ - -// Expand to `(,,,) | EMPTY()`, for example `(int, std::map<int, char>)`. -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_SPECIALIZATION(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_SPECIALIZATION, \ - traits \ - )() - -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_SPECIALIZATION_PARSE(decl_traits) \ - BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_SPECIALIZATION_PARSE_ARGS_ \ - decl_traits \ - ) - -/* PRIVATE */ - -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_SPECIALIZATION_PARSE_ARGS_( \ - decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_SPECIALIZATION_YES_ \ - , \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_SPECIALIZATION_NO_ \ - )(decl, traits) - -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_SPECIALIZATION_NO_(decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_SPECIALIZATION_YES_(decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl) BOOST_PP_EMPTY) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/class/template.hpp b/include/boost/contract/ext_/preprocessor/traits/class/template.hpp deleted file mode 100644 index dd5d212..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/class/template.hpp +++ /dev/null @@ -1,60 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE_HPP_ -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/param.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/index/class.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/keyword_list.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/list.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/template.hpp> -#include <boost/contract/ext_/preprocessor/keyword/default.hpp> - -/* PUBLIC */ - -// Expand to `template | EMPTY()`. -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_TEMPLATE, traits)() - -// Expand to EMPTY() if no class template parameters, otherwise expand to -// pp-seq of param. traits (each pp-seq elem. to be inspected via PARAM_TRAITS). -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE_PARAMS(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_TEMPLATE_PARAMS, \ - traits \ - )() - -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE_PARSE_D(d, decl_traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_PARSE_D(d, \ - decl_traits, \ - template, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TEMPLATE_FRONT, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_REMOVE_FRONT, \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE_ \ - ) - -/* PRIVATE */ - -// Precondition: decl = `(,,,) ...` from `template(,,,) ...` originally in decl. -// This macro will also parse `(,,,)` into a pp-seq of template param traits. -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE_(d, decl) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_1(d, \ - decl, \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE_PARAM_PARSE_, \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE_IS_DEFAULT_, \ - BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE_REPLACE_DEFAULT_PARSE_ \ - ) - -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE_PARAM_PARSE_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE_IS_DEFAULT_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DEFAULT_FRONT(decl) - -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_TEMPLATE_REPLACE_DEFAULT_PARSE_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_REPLACE_DEFAULT_PARSE_D(d, decl) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/class/verbatim.hpp b/include/boost/contract/ext_/preprocessor/traits/class/verbatim.hpp deleted file mode 100644 index c42f9c0..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/class/verbatim.hpp +++ /dev/null @@ -1,30 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_VERBATIM_HPP_ -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_VERBATIM_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/class.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/keyword_paren.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/contract/verbatim.hpp> -#include <boost/preprocessor/facilities/empty.hpp> - -/* PUBLIC */ - -// Expand to `(,,,) | EMPTY()`, for example: `(__declspec(dllexport))`. -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_VERBATIM(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_VERBATIM, traits)() - -// Implementation: Trailing EMPTY already put by KEYWORD_PAREN. -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_VERBATIM_PARSE(decl_traits) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_PUSH_BACK( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_PARSE( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VERBATIM_FRONT, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_REMOVE_FRONT \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/class/virt.hpp b/include/boost/contract/ext_/preprocessor/traits/class/virt.hpp deleted file mode 100644 index 05daa78..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/class/virt.hpp +++ /dev/null @@ -1,31 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_VIRT_HPP_ -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_VIRT_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/class.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/keyword.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/final.hpp> -#include <boost/preprocessor/tuple/elem.hpp> - -/* PUBLIC */ - -// Expand to `final | EMPTY()`. -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_FINAL(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_CLASS_FINAL, traits)() - -// Implementation: Trailing EMPTY already put by KEYWORD1. -#define BOOST_CONTRACT_EXT_PP_CLASS_TRAITS_VIRT_PARSE(decl_traits) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_PUSH_BACK( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD1_PARSE( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - final, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FINAL_FRONT, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_REMOVE_FRONT \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/func.hpp b/include/boost/contract/ext_/preprocessor/traits/func.hpp deleted file mode 100644 index 507280e..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/func.hpp +++ /dev/null @@ -1,222 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_HPP_ -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/func/postconditions.hpp> -#include <boost/contract/ext_/preprocessor/traits/func/preconditions.hpp> -#include <boost/contract/ext_/preprocessor/traits/func/virt.hpp> -#include <boost/contract/ext_/preprocessor/traits/func/except.hpp> -#include <boost/contract/ext_/preprocessor/traits/func/ref.hpp> -#include <boost/contract/ext_/preprocessor/traits/func/cv.hpp> -#include <boost/contract/ext_/preprocessor/traits/func/params.hpp> -#include <boost/contract/ext_/preprocessor/traits/func/name.hpp> -#include <boost/contract/ext_/preprocessor/traits/func/return.hpp> -#include <boost/contract/ext_/preprocessor/traits/func/classifiers.hpp> -#include <boost/contract/ext_/preprocessor/traits/func/template.hpp> -#include <boost/contract/ext_/preprocessor/traits/func/export.hpp> -#include <boost/contract/ext_/preprocessor/traits/func/verbatim.hpp> -#include <boost/contract/ext_/preprocessor/traits/func/access.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> - -/* PUBLIC */ - -// Expand class declaration to `(remaining-declaration, parsed-traits)`. If -// there was no error, remaining declaration is `BOOST_PP_NIL`. Parsed traits -// can be inspected via the FUNC_TRAITS_... macros. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARSE_D(d, decl) \ - BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_DONE_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_POSTCONDITIONS_PARSE_(d, \ - BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_PRECONDITIONS_PARSE_(d, \ - BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_VIRT_PARSE_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_TRAILING_RETURN_PARSE_(d, \ - BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_EXCEPT_PARSE_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_REF_PARSE_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_CV_PARSE_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_PARAMS_PARSE_(d, \ - BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_NAME_PARSE_(d, \ - BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_RETURN_PARSE_(d, \ - BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_CLASSIFIERS_PARSE_(d, \ - BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_TEMPLATE_PARSE_(d, \ - BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_EXPORT_PARSE_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_VERBATIM_PARSE_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_ACCESS_PARSE_( \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - ))))))))))))))))) - -/* PRIVATE */ - -// To debug or test the pp parsing code, #define this internal macro to stop -// parsing at a given trait index as #defined in aux_/index/func.hpp: -// #define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST ... - -// NOTE: These macros #definitions read TRAITS_FUNC instead of FUNC_TRAITS to -// avoid name clashes with macro #define in func/*. - -#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_MAX -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_DONE_(decl_traits) \ - decl_traits -#else -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_DONE_ \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE -#endif - -#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_ACCESS -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_ACCESS_PARSE_(decl_traits) \ - decl_traits -#else -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_ACCESS_PARSE_ \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_ACCESS_PARSE -#endif - -#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_VERBATIM -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_VERBATIM_PARSE_(decl_traits) \ - decl_traits -#else -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_VERBATIM_PARSE_ \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VERBATIM_PARSE -#endif - -#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_EXPORT -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_EXPORT_PARSE_(decl_traits) \ - decl_traits -#else -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_EXPORT_PARSE_ \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXPORT_PARSE -#endif - -#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_TEMPLATE -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_TEMPLATE_PARSE_(d, decl_traits) \ - decl_traits -#else -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_TEMPLATE_PARSE_ \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE_PARSE_D -#endif - -#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_CLASSIFIERS -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_CLASSIFIERS_PARSE_( \ - d, decl_traits) \ - decl_traits -#else -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_CLASSIFIERS_PARSE_ \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_PARSE_D -#endif - -#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_RETURN -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_RETURN_PARSE_(d, decl_traits) \ - decl_traits -#else -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_RETURN_PARSE_ \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN_PARSE_D -#endif - -#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_NAME -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_NAME_PARSE_(d, decl_traits) \ - decl_traits -#else -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_NAME_PARSE_ \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_PARSE_D -#endif - -#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_PARAMS -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_PARAMS_PARSE_(d, decl_traits) \ - decl_traits -#else -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_PARAMS_PARSE_ \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS_PARSE_D -#endif - -#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_CV -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_CV_PARSE_(decl_traits) \ - decl_traits -#else -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_CV_PARSE_ \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CV_PARSE -#endif - -#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_REF -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_REF_PARSE_(decl_traits) \ - decl_traits -#else -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_REF_PARSE_ \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_PARSE -#endif - -#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_EXCEPT -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_EXCEPT_PARSE_(decl_traits) \ - decl_traits -#else -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_EXCEPT_PARSE_ \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT_PARSE -#endif - -#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_TRAILING_RETURN -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_TRAILING_RETURN_PARSE_( \ - d, decl_traits) \ - decl_traits -#else -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_TRAILING_RETURN_PARSE_ \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TRAILING_RETURN_PARSE_D -#endif - -#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_VIRT -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_VIRT_PARSE_(decl_traits) \ - decl_traits -#else -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_VIRT_PARSE_ \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VIRT_PARSE -#endif - -#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_PRECONDITIONS -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_PRECONDITIONS_PARSE_( \ - d, decl_traits) \ - decl_traits -#else -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_PRECONDITIONS_PARSE_ \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PRECONDITIONS_PARSE_D -#endif - -#if defined(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST) && \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_AUX_INDEX_TEST < \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_POSTCONDITIONS -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_POSTCONDITIONS_PARSE_( \ - d, decl_traits) \ - decl_traits -#else -# define BOOST_CONTRACT_EXT_PP_TRAITS_FUNC_POSTCONDITIONS_PARSE_ \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITIONS_PARSE_D -#endif - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/func/access.hpp b/include/boost/contract/ext_/preprocessor/traits/func/access.hpp deleted file mode 100644 index 0627d4a..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/func/access.hpp +++ /dev/null @@ -1,39 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_ACCESS_HPP_ -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_ACCESS_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/keyword.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/public.hpp> -#include <boost/contract/ext_/preprocessor/keyword/protected.hpp> -#include <boost/contract/ext_/preprocessor/keyword/private.hpp> -#include <boost/preprocessor/facilities/empty.hpp> - -/* PUBLIC */ - -// Expand to `public | protected | private | EMPTY()`. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_ACCESS(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_ACCESS, traits)() - -// Implementation: Trailing EMPTY already put by KEYWORD3. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_ACCESS_PARSE(decl_traits) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_PUSH_BACK( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD3_PARSE( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - public, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_PUBLIC_FRONT, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_PUBLIC_REMOVE_FRONT, \ - protected, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_PROTECTED_FRONT, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_PROTECTED_REMOVE_FRONT, \ - private, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_PRIVATE_FRONT, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_PRIVATE_REMOVE_FRONT \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/func/classifiers.hpp b/include/boost/contract/ext_/preprocessor/traits/func/classifiers.hpp deleted file mode 100644 index cd26e3f..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/func/classifiers.hpp +++ /dev/null @@ -1,173 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_HPP_ -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/inline.hpp> -#include <boost/contract/ext_/preprocessor/keyword/static.hpp> -#include <boost/contract/ext_/preprocessor/keyword/extern.hpp> -#include <boost/contract/ext_/preprocessor/keyword/explicit.hpp> -#include <boost/contract/ext_/preprocessor/keyword/virtual.hpp> -#include <boost/contract/ext_/preprocessor/keyword/friend.hpp> -#include <boost/contract/ext_/preprocessor/keyword/inline.hpp> -#include <boost/preprocessor/tuple/elem.hpp> -#include <boost/preprocessor/tuple/rem.hpp> -#include <boost/preprocessor/control/while.hpp> -#include <boost/preprocessor/control/iif.hpp> -#include <boost/preprocessor/control/expr_iif.hpp> -#include <boost/preprocessor/logical/bitand.hpp> -#include <boost/preprocessor/logical/compl.hpp> -#include <boost/preprocessor/facilities/empty.hpp> -#include <boost/preprocessor/facilities/expand.hpp> - -/* PUBLIC */ - -// Expand to `inline | EMPTY()`. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_INLINE(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_INLINE, traits)() - -// Expand to `static | EMPTY()`. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_STATIC(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_STATIC, traits)() - -// Expand to `extern | EMPTY()`. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXTERN(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_EXTERN, traits)() - -// Expand to `explicit | EMPTY()`. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXPLICIT(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_EXPLICIT, traits)() - -// Expand to `virtual | EMPTY()`. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VIRTUAL(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_VIRTUAL, traits)() - -// Expand to `friend | EMPTY()`. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_FRIEND(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_FRIEND, traits)() - -// NOTE: In general, function classifiers `inline static extern explicit virtual -// friend` can appear in most any order (so they are parsed all together here). -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_PARSE_D(d, decl_traits) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_PRASE_ARGS_(d, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE */ - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_PRASE_ARGS_( \ - d, decl, traits) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_RETURN_( \ - traits, \ - BOOST_PP_WHILE_ ## d( \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_PRED_, \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_OP_, \ - (1, decl, 0, 0, 0, 0, 0, 0) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_RETURN_( \ - traits, continue_decl_inline_static_extern_explicit_virtual_friend) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_RETURN_ARGS_( \ - BOOST_PP_TUPLE_ELEM(8, 1, \ - continue_decl_inline_static_extern_explicit_virtual_friend), \ - traits, \ - BOOST_PP_TUPLE_ELEM(8, 2, \ - continue_decl_inline_static_extern_explicit_virtual_friend), \ - BOOST_PP_TUPLE_ELEM(8, 3, \ - continue_decl_inline_static_extern_explicit_virtual_friend), \ - BOOST_PP_TUPLE_ELEM(8, 4, \ - continue_decl_inline_static_extern_explicit_virtual_friend), \ - BOOST_PP_TUPLE_ELEM(8, 5, \ - continue_decl_inline_static_extern_explicit_virtual_friend), \ - BOOST_PP_TUPLE_ELEM(8, 6, \ - continue_decl_inline_static_extern_explicit_virtual_friend), \ - BOOST_PP_TUPLE_ELEM(8, 7, \ - continue_decl_inline_static_extern_explicit_virtual_friend) \ - ) - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_RETURN_ARGS_( \ - decl, traits, inline_, static_, extern_, explicit_, virtual_, friend_) \ - ( \ - decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_EXPR_IIF(inline_, inline) BOOST_PP_EMPTY), \ - BOOST_PP_EXPR_IIF(static_, static) BOOST_PP_EMPTY), \ - BOOST_PP_EXPR_IIF(extern_, extern) BOOST_PP_EMPTY), \ - BOOST_PP_EXPR_IIF(explicit_, explicit) BOOST_PP_EMPTY), \ - BOOST_PP_EXPR_IIF(virtual_, virtual) BOOST_PP_EMPTY), \ - BOOST_PP_EXPR_IIF(friend_, friend) BOOST_PP_EMPTY \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_PRED_( \ - d, continue_decl_inline_static_extern_explicit_virtual_friend) \ - BOOST_PP_TUPLE_ELEM(8, 0, \ - continue_decl_inline_static_extern_explicit_virtual_friend) - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_OP_( \ - d, continue_decl_inline_static_extern_explicit_virtual_friend) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_OP_ARGS_ \ - continue_decl_inline_static_extern_explicit_virtual_friend - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_OP_ARGS_(continue_, \ - decl, inline_, static_, extern_, explicit_, virtual_, friend_) \ - BOOST_PP_EXPAND( \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_ \ - BOOST_PP_IIF(BOOST_PP_BITAND(BOOST_PP_COMPL(inline_), \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_INLINE_FRONT(decl)), \ - (1, BOOST_CONTRACT_EXT_PP_KEYWORD_INLINE_REMOVE_FRONT, \ - decl, 1, static_, extern_, explicit_, virtual_, friend_) \ - , BOOST_PP_IIF(BOOST_PP_BITAND(BOOST_PP_COMPL(static_), \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_STATIC_FRONT(decl)), \ - (1, BOOST_CONTRACT_EXT_PP_KEYWORD_STATIC_REMOVE_FRONT, \ - decl, inline_, 1, extern_, explicit_, virtual_, friend_) \ - , BOOST_PP_IIF(BOOST_PP_BITAND(BOOST_PP_COMPL(extern_), \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXTERN_FRONT(decl)), \ - (1, BOOST_CONTRACT_EXT_PP_KEYWORD_EXTERN_REMOVE_FRONT, \ - decl, inline_, static_, 1, explicit_, virtual_, friend_) \ - , BOOST_PP_IIF(BOOST_PP_BITAND(BOOST_PP_COMPL(explicit_), \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXPLICIT_FRONT(decl)), \ - (1, BOOST_CONTRACT_EXT_PP_KEYWORD_EXPLICIT_REMOVE_FRONT, \ - decl, inline_, static_, extern_, 1, virtual_, friend_) \ - , BOOST_PP_IIF(BOOST_PP_BITAND(BOOST_PP_COMPL(virtual_), \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VIRTUAL_FRONT(decl)), \ - (1, BOOST_CONTRACT_EXT_PP_KEYWORD_VIRTUAL_REMOVE_FRONT, \ - decl, inline_, static_, extern_, explicit_, 1, friend_) \ - , BOOST_PP_IIF(BOOST_PP_BITAND(BOOST_PP_COMPL(friend_), \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FRIEND_FRONT(decl)), \ - (1, BOOST_CONTRACT_EXT_PP_KEYWORD_FRIEND_REMOVE_FRONT, decl, \ - inline_, static_, extern_, explicit_, virtual_, 1) \ - , \ - (0, BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_EXPAND_IDEM_, \ - decl, inline_, static_, extern_, explicit_, virtual_, friend_) \ - )))))) \ - ) - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_( \ - continue_, \ - decl_macro, decl, \ - inline_, static_, extern_, explicit_, virtual_, friend_ \ -) \ - (continue_, decl_macro(decl), inline_, static_, extern_, explicit_, \ - virtual_, friend_) - -// Use this macro (instead of REM(1)) for proper macro expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CLASSIFIERS_EXPAND_IDEM_(decl) decl - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/func/cv.hpp b/include/boost/contract/ext_/preprocessor/traits/func/cv.hpp deleted file mode 100644 index a38d1c2..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/func/cv.hpp +++ /dev/null @@ -1,62 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CV_HPP_ -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CV_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/keyword_comb.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/const.hpp> -#include <boost/contract/ext_/preprocessor/keyword/volatile.hpp> -#include <boost/preprocessor/tuple/elem.hpp> -#include <boost/preprocessor/control/expr_iif.hpp> -#include <boost/preprocessor/facilities/empty.hpp> - -/* PUBLIC */ - -// Expand to `const | EMPTY()`. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CONST(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_CONST, traits)() - -// Expand to `volatile | EMPTY()`. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VOLATILE(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_VOLATILE, traits)() - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CV_PARSE(decl_traits) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CV_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_PARSE( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CONST_FRONT, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CONST_REMOVE_FRONT, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VOLATILE_FRONT, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_VOLATILE_REMOVE_FRONT \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE */ - -// Precondition: cv = `(c, v)` where c/v == 1/0 iif const/volatile present. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_CV_(decl_cv, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_cv), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_EXPR_IIF(BOOST_PP_TUPLE_ELEM(2, 0, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_cv)), \ - const \ - ) \ - BOOST_PP_EMPTY \ - ), \ - BOOST_PP_EXPR_IIF(BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_cv)), \ - volatile \ - ) \ - BOOST_PP_EMPTY \ - ) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/func/except.hpp b/include/boost/contract/ext_/preprocessor/traits/func/except.hpp deleted file mode 100644 index 4003d11..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/func/except.hpp +++ /dev/null @@ -1,72 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT_HPP_ -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/keyword_paren.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/noexcept.hpp> -#include <boost/contract/ext_/preprocessor/keyword/throw.hpp> -#include <boost/preprocessor/control/iif.hpp> -#include <boost/preprocessor/facilities/empty.hpp> -#include <boost/preprocessor/facilities/expand.hpp> - -/* PUBLIC */ - -// Expand to `noexcept | noexcept(,,,) | throw(,,,) | EMPTY()`. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_EXCEPT, traits)() - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT_PARSE(decl_traits) \ - BOOST_PP_EXPAND(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT_PARSE_ARGS_ \ - decl_traits) - -/* PRIVATE */ - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT_PARSE_ARGS_(decl, traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NOEXCEPT_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT_NOEXCEPT_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_THROW_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT_THROW_ \ - , \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT_NONE_ \ - ))(decl, traits) - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT_NOEXCEPT_(decl, traits) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_PARSE( \ - decl, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NOEXCEPT_FRONT, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_NOEXCEPT_REMOVE_FRONT \ - ), \ - noexcept, \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT_THROW_(decl, traits) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_PARSE( \ - decl, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_THROW_FRONT, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_THROW_REMOVE_FRONT \ - ), \ - throw, \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT_NONE_(decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: except = `[(,,,)] EMPTY` (so trailing EMPTY already there). -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXCEPT_( \ - decl_except, keyword, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_except), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - keyword BOOST_PP_TUPLE_ELEM(2, 1, decl_except)) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/func/export.hpp b/include/boost/contract/ext_/preprocessor/traits/func/export.hpp deleted file mode 100644 index 914435a..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/func/export.hpp +++ /dev/null @@ -1,34 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXPORT_HPP_ -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXPORT_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/keyword.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/export.hpp> -#include <boost/preprocessor/tuple/elem.hpp> - -// NOTE: The `export` keyword for templates was deprecated in C++11 but it is -// still supported here for compliance and compatibility with C++03. - -/* PUBLIC */ - -// Expand to `export | EMPTY()`. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXPORT(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_EXPORT, traits)() - -// Implementation: Trailing EMPTY already put by KEYWORD1. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_EXPORT_PARSE(decl_traits) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_PUSH_BACK( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD1_PARSE( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - export, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_EXPORT_FRONT, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_EXPORT_REMOVE_FRONT \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/func/name.hpp b/include/boost/contract/ext_/preprocessor/traits/func/name.hpp deleted file mode 100644 index 28d67d4..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/func/name.hpp +++ /dev/null @@ -1,148 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_HPP_ -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/type.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/operator.hpp> -#include <boost/contract/ext_/preprocessor/keyword/new.hpp> -#include <boost/contract/ext_/preprocessor/keyword/delete.hpp> -#include <boost/contract/ext_/preprocessor/paren/front.hpp> -#include <boost/contract/ext_/preprocessor/paren/has.hpp> -#include <boost/preprocessor/seq/cat.hpp> -#include <boost/preprocessor/seq/for_each.hpp> -#include <boost/preprocessor/tuple/eat.hpp> -#include <boost/preprocessor/tuple/rem.hpp> -#include <boost/preprocessor/control/iif.hpp> -#include <boost/preprocessor/control/expr_iif.hpp> -#include <boost/preprocessor/facilities/empty.hpp> - -/* PUBLIC */ - -// Expand to `(operator_name,,,) | EMPTY()` (EMPTY if not an operator). -// This is the usual C++ operator's symbolic name (often NOT alphanumeric like -// `+`, etc.), use NAME macro below for operator's alphanumeric name instead. -// Wrapped within parenthesis to handle comma operator `(,)`, conversion -// operators for types with commas `(std::map<int, char>)`, etc. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_OPERATOR_NAME(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_OPERATOR_NAME, traits)() - -// Expand to `func_name`. -// This is always an alphanumeric name (also for operators like `plus`, etc.), -// but for destructors where name has the leading symbol `~`. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_NAME, traits) - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_PARSE_D(d, decl_traits) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_ARGS_(d, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE */ - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_ARGS_(d, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OPERATOR_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_YES_ \ - , \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_NO_ \ - )(d, decl, traits) -// Precondition: decl = `operator ...` -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_YES_(d, decl, traits) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_(d, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_OPERATOR_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_(d, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_PAREN_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_NEW_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_NEW_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DELETE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_DELETE_ \ - , \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_TYPE_ \ - )))(d, decl, traits) - -// Precondition: decl = `parenthesized-type ...`. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_TYPE_(d, decl, traits) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_TYPE_SEQ_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_SEQ_PARSE_D(d, decl), traits) - -// Precondition: SECOND(decl_type) is a double parenthesized sequence of type -// traits (e.g., `((int)) ((const))`). -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_TYPE_SEQ_( \ - decl_type, traits) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_PAREN_(~, \ - ( \ - BOOST_PP_SEQ_FOR_EACH( \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_TYPE_REM_,\ - 1, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)() \ - ) \ - ) \ - ( \ - BOOST_PP_SEQ_CAT( \ - BOOST_PP_SEQ_FOR_EACH( \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_TYPE_REM_, \ - 0, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)() \ - ) \ - ) \ - ) \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type), \ - traits \ - ) - -// This macro already removes one set of parenthesis via the SEQ_FOR_EACH -// (from `((elem))` to `(elem)`). Furthermore, if remove_all_paren is 1, it also -// removes a second set of parenthesis (removing all parenthesis of a double -// parenthesized sequence element, from `((elem))` to `elem`). -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_TYPE_REM_( \ - r, remove_all_paren, paren_type_trait) \ - BOOST_PP_EXPR_IIF(remove_all_paren, \ - BOOST_PP_TUPLE_REM(1) \ - ) paren_type_trait - -// Precondition: decl = `delete ...`. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_DELETE_( \ - unused, decl, traits) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_PAREN_(~, (delete)(delete) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_DELETE_REMOVE_FRONT(decl), traits) - -// Precondition: decl = `new ...`. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_NEW_( \ - unused, decl, traits) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_PAREN_(~, (new)(new) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_NEW_REMOVE_FRONT(decl), traits) - -// Precondition: decl = `(operator_name,,,) (func_name) ...`. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_PAREN_( \ - unused, decl, traits) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_( \ - BOOST_PP_TUPLE_EAT(0) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl) BOOST_PP_EMPTY) \ - ) - -// Add empty operator name (i.e., not an operator). -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_OPERATOR_NO_( \ - unused, decl, traits) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_(decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Precondition: decl = `(func_name) ...`. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_NAME_(decl, traits) \ - ( \ - BOOST_PP_TUPLE_EAT(1) decl, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_TUPLE_REM_CTOR(1, \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT(decl)) \ - ) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/func/params.hpp b/include/boost/contract/ext_/preprocessor/traits/func/params.hpp deleted file mode 100644 index 4aba020..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/func/params.hpp +++ /dev/null @@ -1,51 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS_HPP_ -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/param.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/keyword_list.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/list.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/preprocessor/tuple/elem.hpp> -#include <boost/preprocessor/facilities/empty.hpp> - -/* PUBLIC */ - -// Expand to EMPTY() if no function formal parameters, otherwise expand to -// pp-seq of param. traits (each pp-seq elem. to be inspected via PARAM_TRAITS). -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_PARAMS, traits)() - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS_PARSE_D(d, decl_traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_PUSH_BACK_PARSE_D(d, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits), \ - BOOST_PP_EMPTY(), \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS_ \ - ) - -/* PRIVATE */ - -// Precondition: decl = `(,,,) ...`. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS_(d, decl) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_VOID_LIST_PARSE_D_1(d, \ - decl, \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS_PARAM_PARSE_, \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS_IS_DEFAULT_, \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS_REPLACE_DEFAULT_PARSE_ \ - ) - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS_PARAM_PARSE_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS_IS_DEFAULT_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DEFAULT_FRONT(decl) - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PARAMS_REPLACE_DEFAULT_PARSE_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_REPLACE_DEFAULT_PARSE_D(d, decl) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/func/postconditions.hpp b/include/boost/contract/ext_/preprocessor/traits/func/postconditions.hpp deleted file mode 100644 index c116848..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/func/postconditions.hpp +++ /dev/null @@ -1,45 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITIONS_HPP_ -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITIONS_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/assertion.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/keyword_list.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/list.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/contract/postcondition.hpp> -#include <boost/preprocessor/facilities/empty.hpp> - -/* PUBLIC */ - -// Expand to pp-seq of postcondition assertion traits to be inspected via -// ASSERTION_TRAITS macro, or to EMPTY() if no postconditions. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITIONS(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_POSTCONDITIONS, traits \ - )() - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITIONS_PARSE_D( \ - d, decl_traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_PARSE_D(d, \ - decl_traits, \ - BOOST_PP_EMPTY(), \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_POSTCONDITION_FRONT, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_POSTCONDITION_REMOVE_FRONT, \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITIONS_ \ - ) - -/* PRIVATE */ - -// Precondition: decl = `(,,,) ...` from `postcondition(,,,) ...` originally in -// decl. This macro will also parse `(,,,)` into a pp-seq of assertion traits. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_POSTCONDITIONS_(d, decl) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_1(d, \ - decl, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_PARSE_D_L_1, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_1, \ - BOOST_CONTRACT_EXT_PP_POST_ASSERTION_TRAITS_REPLACE_PARSE_D_L_1 \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/func/preconditions.hpp b/include/boost/contract/ext_/preprocessor/traits/func/preconditions.hpp deleted file mode 100644 index 80413bb..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/func/preconditions.hpp +++ /dev/null @@ -1,44 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PRECONDITIONS_HPP_ -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PRECONDITIONS_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/assertion.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/keyword_list.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/list.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/contract/precondition.hpp> -#include <boost/preprocessor/facilities/empty.hpp> - -/* PUBLIC */ - -// Expand to pp-seq of precondition assertion traits to be inspected via -// ASSERTION_TRAITS macro, or to EMPTY() if no preconditions. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PRECONDITIONS(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_PRECONDITIONS, traits)() - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PRECONDITIONS_PARSE_D( \ - d, decl_traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_PARSE_D(d, \ - decl_traits, \ - BOOST_PP_EMPTY(), \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_PRECONDITION_FRONT, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_PRECONDITION_REMOVE_FRONT, \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PRECONDITIONS_ \ - ) - -/* PRIVATE */ - -// Precondition: decl = `(,,,) ...` from `precondition(,,,) ...` originally in -// decl. This macro will also parse `(,,,)` into a pp-seq of assertion traits. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_PRECONDITIONS_(d, decl) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ENUM_LIST_PARSE_D_1(d, \ - decl, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_PARSE_D_L_1, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_IS_REPLACEMENT_D_L_1, \ - BOOST_CONTRACT_EXT_PP_ASSERTION_TRAITS_REPLACE_PARSE_D_L_1 \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/func/ref.hpp b/include/boost/contract/ext_/preprocessor/traits/func/ref.hpp deleted file mode 100644 index fcc7361..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/func/ref.hpp +++ /dev/null @@ -1,75 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_HPP_ -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/contract/ref.hpp> -#include <boost/preprocessor/facilities/empty.hpp> -#include <boost/preprocessor/facilities/expand.hpp> - -/* PUBLIC */ - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_IS_REF_REF(tokens) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_REF_FRONT( \ - tokens), \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_IS_REF_REF_MAYBE_ \ - , \ - 0 BOOST_PP_TUPLE_EAT(1) \ - )(tokens) - -// Expand to `ref | ref ref | EMPTY()` (ref for lvalue&, ref ref for rvalue&&). -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_REF, traits)() - -// Implementation: EXPAND needed for proper expansion (on MSVC). -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_PARSE(decl_traits) \ - BOOST_PP_EXPAND(BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_PARSE_ARGS_ \ - decl_traits) - -/* PRIVATE */ - -// Precondition: tokens = `ref ...`. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_IS_REF_REF_MAYBE_(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_REF_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_REF_REMOVE_FRONT(tokens)) - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_PARSE_ARGS_(decl, traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_REF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_YES_ \ - , \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_NO_ \ - )(decl, traits) - -// Precondition: decl = `ref ...`. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_YES_(decl, traits) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_REF_( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_REF_REMOVE_FRONT(decl), traits) - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_REF_(decl, traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_REF_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_REF_YES_ \ - , \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_REF_NO_ \ - )(decl, traits) - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_NO_(decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_REF_NO_(decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ref BOOST_PP_EMPTY)) - -// Precondition: decl = `ref ...`. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_REF_REF_YES_(decl, traits) \ - ( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_REF_REMOVE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - ref ref BOOST_PP_EMPTY) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/func/return.hpp b/include/boost/contract/ext_/preprocessor/traits/func/return.hpp deleted file mode 100644 index 75c9779..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/func/return.hpp +++ /dev/null @@ -1,110 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN_HPP_ -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/type.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/return.hpp> -#include <boost/contract/ext_/preprocessor/keyword/operator.hpp> -#include <boost/contract/ext_/preprocessor/paren/has.hpp> -#include <boost/preprocessor/tuple/eat.hpp> -#include <boost/preprocessor/facilities/empty.hpp> -#include <boost/preprocessor/control/iif.hpp> - -/* PUBLIC */ - -// Expand to `(,,,) | auto | EMPTY()` (`auto` for alternative function syntax, -// see also `..._TRAILING_RETURN`), for example: `(void)`, `(map<U, V>)`. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_RETURN, traits)() - -// Expand to `(,,,) | EMPTY()`. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TRAILING_RETURN(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_TRAILING_RETURN, traits \ - )() - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN_PARSE_D(d, decl_traits) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN_PARSE_ARGS_(d, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TRAILING_RETURN_PARSE_D( \ - d, decl_traits) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TRAILING_RETURN_PARSE_ARGS_(d, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE */ - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TRAILING_RETURN_PARSE_ARGS_( \ - d, decl, traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_RETURN_FRONT(decl), \ - BOST_CONTRACT_EXT_PP_FUNC_TRAITS_TRAILING_RETURN_YES_ \ - , \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN_NO_ \ - )(d, decl, traits) - -// Precondition: decl = `return ...`. -// Implementation: Trailing EMPTY already added by AUX_TYPE_PARSE. -#define BOST_CONTRACT_EXT_PP_FUNC_TRAITS_TRAILING_RETURN_YES_(d, decl, traits) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_PUSH_BACK( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_PARSE_D(d, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_RETURN_REMOVE_FRONT(decl)), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN_PARSE_ARGS_(d, decl, traits) \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_HAS_RETURN_(decl), \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN_YES_ \ - , \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN_NO_ \ - )(d, decl, traits) - -// Implementation: Trailing EMPTY already added by AUX_AUTO_TYPE_PARSE. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN_YES_(d, decl, traits) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_PUSH_BACK( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_AUTO_TYPE_PARSE_D(d, decl), traits) - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN_NO_(d, decl, traits) \ - (decl, BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, BOOST_PP_EMPTY)) - -// Constructors, destructors, type conversion operators, etc. do no have a -// return type so this checks first if this declaration is supposed to have -// a return type or not (based on upcoming number of parenthesis, etc.). -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_HAS_RETURN_(decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(decl), \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN_PEEK_NAME_AND_PARAMS_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OPERATOR_FRONT(decl), \ - 0 BOOST_PP_TUPLE_EAT(1) \ - , \ - 1 BOOST_PP_TUPLE_EAT(1) \ - ))(decl) - -// Precondition: decl = `(result_type?) ...` -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN_PEEK_NAME_AND_PARAMS_(decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(BOOST_PP_TUPLE_EAT(0) decl), \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN_PEEK_PARAMS_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OPERATOR_FRONT( \ - BOOST_PP_TUPLE_EAT(0) decl), \ - 1 BOOST_PP_TUPLE_EAT(1) \ - , \ - 0 BOOST_PP_TUPLE_EAT(1) \ - ))(BOOST_PP_TUPLE_EAT(0) decl) - -// Precondition: decl = `(func_name?) ...` -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_RETURN_PEEK_PARAMS_(decl) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(BOOST_PP_TUPLE_EAT(0) decl), \ - 1 \ - , \ - 0 \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/func/template.hpp b/include/boost/contract/ext_/preprocessor/traits/func/template.hpp deleted file mode 100644 index 5f6b611..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/func/template.hpp +++ /dev/null @@ -1,60 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE_HPP_ -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/param.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/keyword_list.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/list.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/template.hpp> -#include <boost/contract/ext_/preprocessor/keyword/default.hpp> - -/* PUBLIC */ - -// Expand to `template | EMPTY()`. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_TEMPLATE, traits)() - -// Expand to EMPTY() if no function template parameters, otherwise expand to -// pp-seq of param. traits (each pp-seq elem. to be inspected via PARAM_TRAITS). -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE_PARAMS(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_TEMPLATE_PARAMS, \ - traits \ - )() - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE_PARSE_D(d, decl_traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_LIST_PARSE_D(d, \ - decl_traits, \ - template, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TEMPLATE_FRONT, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_REMOVE_FRONT, \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE_ \ - ) - -/* PRIVATE */ - -// Precondition: decl = `(,,,) ...` from `template(,,,) ...` originally in decl. -// This macro will also parse `(,,,)` into a pp-seq of template param traits. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE_(d, decl) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_LIST_PARSE_D_1(d, \ - decl, \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE_PARAM_PARSE_, \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE_IS_DEFAULT_, \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE_REPLACE_DEFAULT_PARSE_ \ - ) - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE_PARAM_PARSE_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_PARSE_D(d, decl) - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE_IS_DEFAULT_(d, l, decl) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_DEFAULT_FRONT(decl) - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_TEMPLATE_REPLACE_DEFAULT_PARSE_( \ - d, l, decl) \ - BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_REPLACE_DEFAULT_PARSE_D(d, decl) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/func/verbatim.hpp b/include/boost/contract/ext_/preprocessor/traits/func/verbatim.hpp deleted file mode 100644 index 43fd247..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/func/verbatim.hpp +++ /dev/null @@ -1,30 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VERBATIM_HPP_ -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VERBATIM_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/keyword_paren.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/contract/verbatim.hpp> -#include <boost/preprocessor/facilities/empty.hpp> - -/* PUBLIC */ - -// Expand to `(,,,) | EMPTY()`. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VERBATIM(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_VERBATIM, traits)() - -// Implementation: Trailing EMPTY already put by KEYWORD_PAREN. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VERBATIM_PARSE(decl_traits) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_PUSH_BACK( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD_PAREN_PARSE( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_VERBATIM_FRONT, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_VERBATIM_REMOVE_FRONT \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/func/virt.hpp b/include/boost/contract/ext_/preprocessor/traits/func/virt.hpp deleted file mode 100644 index e9a973d..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/func/virt.hpp +++ /dev/null @@ -1,62 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VIRT_HPP_ -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VIRT_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/func.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/keyword_comb.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/final.hpp> -#include <boost/contract/ext_/preprocessor/keyword/override.hpp> -#include <boost/preprocessor/tuple/elem.hpp> -#include <boost/preprocessor/control/expr_iif.hpp> -#include <boost/preprocessor/facilities/empty.hpp> - -/* PUBLIC */ - -// Expand to `final | EMPTY()`. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_FINAL(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_FINAL, traits)() - -// Expand to `override | EMPTY()`. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_OVERRIDE(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_FUNC_OVERRIDE, traits)() - -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VIRT_PARSE(decl_traits) \ - BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VIRT_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_KEYWORD2_COMB_PARSE( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_FINAL_FRONT, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_FINAL_REMOVE_FRONT, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_OVERRIDE_FRONT, \ - BOOST_CONTRACT_EXT_PP_KEYWORD_OVERRIDE_REMOVE_FRONT \ - ), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE */ - -// Precondition: virt = `(f, o)` where f/o == 1/0 iff final/override present. -#define BOOST_CONTRACT_EXT_PP_FUNC_TRAITS_VIRT_(decl_virt, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_virt), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_PP_EXPR_IIF(BOOST_PP_TUPLE_ELEM(2, 0, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_virt)), \ - final \ - ) \ - BOOST_PP_EMPTY \ - ), \ - BOOST_PP_EXPR_IIF(BOOST_PP_TUPLE_ELEM(2, 1, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_virt)), \ - override \ - ) \ - BOOST_PP_EMPTY \ - ) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/param.hpp b/include/boost/contract/ext_/preprocessor/traits/param.hpp deleted file mode 100644 index cb233fb..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/param.hpp +++ /dev/null @@ -1,31 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_HPP_ -#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/param/type.hpp> -#include <boost/contract/ext_/preprocessor/traits/param/name.hpp> -#include <boost/contract/ext_/preprocessor/traits/param/default.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> - -/* PUBLIC */ - -#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_PARSE_D(d, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_EMPTY_DEFAULT_PARSE( \ - BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_NAME_PARSE( \ - BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE_PARSE_D(d, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - ))))) - -#define BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_PARSE_D(d, decl) \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_DONE( \ - BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_EMPTY_DEFAULT_PARSE( \ - BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_NAME_PARSE( \ - BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_PARSE_D(d, \ - BOOST_CONTRACT_EXT_PP_DECL_TRAITS_AUX_INIT( \ - decl BOOST_PP_NIL \ - ))))) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/param/default.hpp b/include/boost/contract/ext_/preprocessor/traits/param/default.hpp deleted file mode 100644 index 1b72873..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/param/default.hpp +++ /dev/null @@ -1,46 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_DEFAULT_HPP_ -#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_DEFAULT_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/param.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/default.hpp> -#include <boost/contract/ext_/preprocessor/parenthesize.hpp> -#include <boost/preprocessor/tuple/elem.hpp> -#include <boost/preprocessor/facilities/empty.hpp> - -/* PUBLIC */ - -// Expand to `(,,,) | EMPTY()`, for example: `(true)` or `(same<U, V>::value)`. -#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_DEFAULT(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_PARAM_DEFAULT, traits)() - -// Initialize default argument to EMPTY without altering decl. -#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_EMPTY_DEFAULT_PARSE(decl_traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(BOOST_PP_TUPLE_ELEM(2, 1, \ - decl_traits), BOOST_PP_EMPTY) \ - ) - -// Replace previously init. default argument with what's parsed from decl. -// Precondition: decl = `default ...`. -#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_REPLACE_DEFAULT_PARSE_D( \ - d, decl_traits) \ - ( \ - BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_POP_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits)), \ - BOOST_CONTRACT_EXT_PP_PARENTHESIZE( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_DEFAULT_REMOVE_FRONT( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits) \ - ) \ - ) \ - BOOST_PP_EMPTY \ - ) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/param/name.hpp b/include/boost/contract/ext_/preprocessor/traits/param/name.hpp deleted file mode 100644 index c34f26b..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/param/name.hpp +++ /dev/null @@ -1,29 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_NAME_HPP_ -#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_NAME_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/param.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/preprocessor/tuple/elem.hpp> - -/* PUBLIC */ - -// Expand to `[...] name | EMPTY()` (ellipses `...` for variadic templates). -#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_NAME(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_PARAM_NAME, traits)() - -// Precondition: name must always be the last remaining token in decl. -#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_NAME_PARSE(decl_traits) \ - ( \ - BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits), \ - BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits)) \ - BOOST_PP_EMPTY \ - ) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/traits/param/type.hpp b/include/boost/contract/ext_/preprocessor/traits/param/type.hpp deleted file mode 100644 index c3f7547..0000000 --- a/include/boost/contract/ext_/preprocessor/traits/param/type.hpp +++ /dev/null @@ -1,157 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE_HPP_ -#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE_HPP_ - -#include <boost/contract/ext_/preprocessor/traits/aux_/index/param.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/type.hpp> -#include <boost/contract/ext_/preprocessor/traits/aux_/adt.hpp> -#include <boost/contract/ext_/preprocessor/keyword/typename.hpp> -#include <boost/contract/ext_/preprocessor/keyword/class.hpp> -#include <boost/contract/ext_/preprocessor/keyword/template.hpp> -#include <boost/preprocessor/tuple/eat.hpp> -#include <boost/preprocessor/tuple/rem.hpp> -#include <boost/preprocessor/control/iif.hpp> -#include <boost/preprocessor/control/expr_iif.hpp> -#include <boost/preprocessor/facilities/empty.hpp> - -/* PUBLIC */ - -// Expand to `typename | class | (,,,) | template( ,,, ) class` (for -// type template parameters, value template parameter or function formal -// parameters, and template template parameters respectively). -// See also TEMPLATE_PARAM macros below for template template parameters. -#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE(traits) \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_ELEM( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_INDEX_PARAM_TYPE, traits) - -// Expand `template( ,,, ) ...` to `( ,,, )` (this is useful to get the -// pp-tuple with the template parameters of a template template parameter). -// Expand to `(...)` for variadic function parameters. -// Precondition: tokens = `template( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_TEMPLATE_PARAMS( \ - tokens) \ - BOOST_CONTRACT_EXT_PP_PAREN_FRONT( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_REMOVE_FRONT(tokens)) - -// Expand `template( ,,, ) ...` to `...` (for example, this is useful to get -// the `class` key specifier of a template template parameter, without assuming -// it is `class`). -// Precondition: tokens = `template( ,,, ) ...`. -#define BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_TEMPLATE_KEY(tokens) \ - BOOST_PP_TUPLE_EAT(0) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TEMPLATE_REMOVE_FRONT(tokens) - -// Parse type for (function formal, not template) parameters. -#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE_PARSE_D(d, decl_traits) \ - BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE_PARSE_ARGS_(d, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -// Parse "type" (or "key") for template parameters. -#define BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_PARSE_D( \ - d, decl_traits) \ - BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_PARSE_ARGS_(d, \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_traits), \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_traits) \ - ) - -/* PRIVATE */ - -#define BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_PARSE_ARGS_( \ - d, decl, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TYPENAME_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_TYPENAME_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CLASS_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_CLASS_ \ - , BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_TEMPLATE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_TEMPLATE_ \ - , \ - BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE_PARSE_ARGS_ \ - )))(d, decl, traits) - -// Precondition: decl = `wrapped-type ... | type`. -#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE_PARSE_ARGS_(d, decl, traits) \ - BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE_( \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_TYPE_PARSE_D(d, decl), traits) - -#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE_(decl_type, traits) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY( \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()), \ - BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE_NO_ \ - , \ - BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE_YES_ \ - )(decl_type, traits) - -// Precondition: Unable to parse type so assume decl = `type NIL` (i.e., the -// non-keyword type was specified unwrapped). That is allowed only when no -// parameter name is given so all tokens in decl are for the type and remaining -// decl is set to NIL here (which will be parsed as no parameter name). -#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE_NO_(decl_type, traits) \ - ( \ - BOOST_PP_NIL, \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type)) \ - ) \ - ) - -#define BOOST_CONTRACT_EXT_PP_PARAM_TRAITS_TYPE_YES_(decl_type, traits) \ - ( \ - BOOST_PP_TUPLE_ELEM(2, 0, decl_type), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, \ - BOOST_PP_TUPLE_ELEM(2, 1, decl_type)()) \ - ) - -// Precondition: decl = `typename ...`. -#define BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_TYPENAME_( \ - d, decl, traits) \ - ( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_TYPENAME_REMOVE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, typename) \ - ) - -// Precondition: decl = `class ...`. -#define BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_CLASS_( \ - d, decl, traits) \ - ( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_REMOVE_FRONT(decl), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK(traits, class) \ - ) - -// Precondition: decl = `template(,,,) ...`. -#define BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_TEMPLATE_( \ - d, decl, traits) \ - BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_TEMPLATE_PUSH_BACK_( \ - BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_TEMPLATE_KEY( \ - decl), \ - BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_TEMPLATE_PARAMS( \ - decl), \ - traits \ - ) - -#define BOOST_CONTRACT_EXT_PP_TEMPLATE_PARAM_TRAITS_TYPE_TEMPLATE_PUSH_BACK_( \ - template_template_key, template_template_params, traits) \ - ( \ - BOOST_PP_IIF( \ - BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CLASS_FRONT( \ - template_template_key) \ - , \ - BOOST_CONTRACT_EXT_PP_KEYWORD_CLASS_REMOVE_FRONT \ - , \ - BOOST_PP_TUPLE_REM(1) \ - )(template_template_key), \ - BOOST_CONTRACT_EXT_PP_TRAITS_AUX_PUSH_BACK( \ - traits, \ - template \ - template_template_params \ - BOOST_PP_EXPR_IIF(BOOST_CONTRACT_EXT_PP_KEYWORD_IS_CLASS_FRONT( \ - template_template_key), \ - class \ - ) \ - ) \ - ) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/utility/empty.hpp b/include/boost/contract/ext_/preprocessor/utility/empty.hpp deleted file mode 100644 index beaa217..0000000 --- a/include/boost/contract/ext_/preprocessor/utility/empty.hpp +++ /dev/null @@ -1,42 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_EMPTY_HPP_ -#define BOOST_CONTRACT_EXT_PP_EMPTY_HPP_ - -#include <boost/contract/ext_/preprocessor/paren/has.hpp> -#include <boost/preprocessor/control/iif.hpp> -#include <boost/preprocessor/comparison/equal.hpp> -#include <boost/preprocessor/tuple/eat.hpp> -#include <boost/preprocessor/facilities/empty.hpp> -#include <boost/preprocessor/facilities/is_empty.hpp> -#include <boost/preprocessor/variadic/size.hpp> - -// NOTE: Variadics (and trailing EMPTY()) are used to handle empty arguments on -// all compilers (including MSVC). - -/* PRIVATE */ - -#define BOOST_CONTRACT_EXT_PP_IS_EMPTY_NO_(...) 0 - -#define BOOST_CONTRACT_EXT_PP_IS_EMPTY_MAYBE_(...) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_HAS_PAREN(__VA_ARGS__ \ - BOOST_PP_EMPTY()), \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY_NO_ \ - , \ - BOOST_PP_IS_EMPTY \ - )(__VA_ARGS__ BOOST_PP_EMPTY()) - -/* PUBLIC */ - -// Only IS_EMPTY() expands to 1. -// Handle arguments with parenthesis and commas, BOOST_PP_EMPTY does not -// (e.g., IS_EMPTY(x), IS_EMPTY(()), IS_EMPTY(x, y), IS_EMPTY((), ()) all -// expand to 0). -#define BOOST_CONTRACT_EXT_PP_IS_EMPTY(...) \ - BOOST_PP_IIF(BOOST_PP_EQUAL(1, BOOST_PP_VARIADIC_SIZE(__VA_ARGS__)), \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY_MAYBE_ \ - , \ - BOOST_CONTRACT_EXT_PP_IS_EMPTY_NO_ \ - )(__VA_ARGS__) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/utility/nil.hpp b/include/boost/contract/ext_/preprocessor/utility/nil.hpp deleted file mode 100644 index 7aaaee9..0000000 --- a/include/boost/contract/ext_/preprocessor/utility/nil.hpp +++ /dev/null @@ -1,51 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_NIL_HPP_ -#define BOOST_CONTRACT_EXT_PP_NIL_HPP_ - -#include <boost/contract/ext_/preprocessor/keyword/utility/is.hpp> -#include <boost/contract/ext_/preprocessor/keyword/utility/remove.hpp> - -/* PUBLIC */ - -// This macro name must NOT be #defined (used here like a "keyword"). The -// Boost.Preprocessor doc indicates the purpose of BOOST_PP_NIL is to NOT be -// a macro (i.e., to be #undefined, according with its usage here). -#ifdef BOOST_PP_NIL -# error "reserved macro name must not be #defined" -#endif - -// Precondition: tokens must start with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_FRONT( \ - BOOST_CONTRACT_EXT_PP_NIL_CAT_TO_COMMA, tokens) - -// Precondition: tokens must end with a token concatenable to a macro name -// (e.g., a literal or integral token) or with parenthesis. -#define BOOST_CONTRACT_EXT_PP_IS_NIL_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_IS_BACK( \ - BOOST_CONTRACT_EXT_PP_NIL_CAT_TO_COMMA, tokens) - -// Precondition: tokens must start with `BOOST_PP_NIL` (this can be -// checked with `..._IS_NIL_FRONT` macro above). -#define BOOST_CONTRACT_EXT_PP_NIL_REMOVE_FRONT(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_FRONT( \ - BOOST_CONTRACT_EXT_PP_NIL_CAT_TO_EMPTY, tokens) - -// Precondition: tokens must end with `BOOST_PP_NIL` (this can be -// checked with `..._IS_NIL_BACK` macro above). -#define BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(tokens) \ - BOOST_CONTRACT_EXT_PP_KEYWORD_UTILITY_REMOVE_BACK( \ - BOOST_CONTRACT_EXT_PP_NIL_CAT_TO_EMPTY, tokens) - -/* PRIVATE */ - -// Must expand to a single comma `,` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_NIL_CAT_TO_COMMABOOST_PP_NIL , -#define BOOST_PP_NILBOOST_CONTRACT_EXT_PP_NIL_CAT_TO_COMMA , -// Must expand to empty `` (not local macros, do not #undefine). -#define BOOST_CONTRACT_EXT_PP_NIL_CAT_TO_EMPTYBOOST_PP_NIL -#define BOOST_PP_NILBOOST_CONTRACT_EXT_PP_NIL_CAT_TO_EMPTY - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/variadic/enum_to_seq.hpp b/include/boost/contract/ext_/preprocessor/variadic/enum_to_seq.hpp deleted file mode 100644 index a59ddd0..0000000 --- a/include/boost/contract/ext_/preprocessor/variadic/enum_to_seq.hpp +++ /dev/null @@ -1,47 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ_HPP_ -#define BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ_HPP_ - -#include <boost/contract/ext_/preprocessor/utility/nil.hpp> -#include <boost/preprocessor/variadic/to_seq.hpp> -#include <boost/preprocessor/seq/pop_back.hpp> -#include <boost/preprocessor/seq/elem.hpp> -#include <boost/preprocessor/seq/size.hpp> -#include <boost/preprocessor/tuple/eat.hpp> -#include <boost/preprocessor/arithmetic/dec.hpp> -#include <boost/preprocessor/logical/compl.hpp> -#include <boost/preprocessor/control/iif.hpp> - -/* PRIVATE */ - -// Wrapped with parenthesis after removal of NIL so to make it a pp-seq elem. -#define BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ_REMOVE_NIL_(back) \ - (BOOST_CONTRACT_EXT_PP_NIL_REMOVE_BACK(back)) - -#define BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ_BACK_(seq, back) \ - BOOST_PP_SEQ_POP_BACK(seq) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_NIL_FRONT(back), \ - BOOST_PP_TUPLE_EAT(1) \ - , \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ_REMOVE_NIL_ \ - )(back) - -#define BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ_(seq) \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ_BACK_(seq, \ - BOOST_PP_SEQ_ELEM(BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq)), seq)) - -/* PUBLIC */ - -// Expand EMPTY() to EMPTY(), otherwise variadic to seq allowing for an -// optional trailing comma (like with C++ enumerations): -// `` to `` -// `x, ..., y` to (x)...(y) -// `x, ..., y,` to (x)...(y) (handle optional trailing comma `,`) -// Implementation: Tokens must be front-concatenable and cannot be specified as -// NIL (because they are internally for being NIL). -#define BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ(...) \ - BOOST_CONTRACT_EXT_PP_VARIADIC_ENUM_TO_SEQ_( \ - BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__ BOOST_PP_NIL)) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/variadic/to_seq.hpp b/include/boost/contract/ext_/preprocessor/variadic/to_seq.hpp deleted file mode 100644 index e30a5ab..0000000 --- a/include/boost/contract/ext_/preprocessor/variadic/to_seq.hpp +++ /dev/null @@ -1,20 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ_HPP_ -#define BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ_HPP_ - -#include <boost/contract/ext_/preprocessor/utility/empty.hpp> -#include <boost/preprocessor/variadic/to_seq.hpp> -#include <boost/preprocessor/control/iif.hpp> - -/* PUBLIC */ - -// Expand EMPTY() to EMPTY(), otherwise expand variadic data to pp-seq. -#define BOOST_CONTRACT_EXT_PP_VARIADIC_TO_SEQ(...) \ - BOOST_PP_IIF(BOOST_CONTRACT_EXT_PP_IS_EMPTY(__VA_ARGS__), \ - BOOST_PP_EMPTY \ - , \ - BOOST_PP_VARIADIC_TO_SEQ \ - )(__VA_ARGS__) - -#endif // #include guard - diff --git a/include/boost/contract/ext_/preprocessor/variadic/wrap_iif.hpp b/include/boost/contract/ext_/preprocessor/variadic/wrap_iif.hpp deleted file mode 100644 index e25ad70..0000000 --- a/include/boost/contract/ext_/preprocessor/variadic/wrap_iif.hpp +++ /dev/null @@ -1,16 +0,0 @@ - -#ifndef BOOST_CONTRACT_EXT_PP_VARIADIC_WRAP_IIF_HPP_ -#define BOOST_CONTRACT_EXT_PP_VARIADIC_WRAP_IIF_HPP_ - -#include <boost/preprocessor/control/expr_iif.hpp> - -/* PUBLIC */ - -// Expand to `prefix ,,, postfix` if bit is 1, or to `,,,` if bit is 0 (where -// `prefix`, `,,,`, and `postfix` can all be EMTPY()). -#define BOOST_CONTRACT_EXT_PP_VARIADIC_WRAP_IIF(bit, prefix, postfix, ...) \ - BOOST_PP_TUPLE_REM_CTOR(BOOST_PP_IIF(bit, \ - (prefix __VA_ARGS__ postfix), (__VA_ARGS__))) - -#endif // #include guard -