diff options
author | DongHun Kwak <dh0128.kwak@samsung.com> | 2019-12-05 15:24:45 +0900 |
---|---|---|
committer | DongHun Kwak <dh0128.kwak@samsung.com> | 2019-12-05 15:24:45 +0900 |
commit | 5ce1cfc2525b06c0a9e38531813781de0281c96d (patch) | |
tree | 19cc66c6cf6396db288813b2558cc350f1deede2 /boost/parameter/aux_/preprocessor | |
parent | 3c1df2168531ad5580076ae08d529054689aeedd (diff) | |
download | boost-5ce1cfc2525b06c0a9e38531813781de0281c96d.tar.gz boost-5ce1cfc2525b06c0a9e38531813781de0281c96d.tar.bz2 boost-5ce1cfc2525b06c0a9e38531813781de0281c96d.zip |
Imported Upstream version 1.71.0upstream/1.71.0
Diffstat (limited to 'boost/parameter/aux_/preprocessor')
32 files changed, 9929 insertions, 208 deletions
diff --git a/boost/parameter/aux_/preprocessor/binary_seq_for_each.hpp b/boost/parameter/aux_/preprocessor/binary_seq_for_each.hpp new file mode 100644 index 0000000000..700d918a9d --- /dev/null +++ b/boost/parameter/aux_/preprocessor/binary_seq_for_each.hpp @@ -0,0 +1,1638 @@ +// Copyright Cromwell D. Enage 2017. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_BINARY_SEQ_FOR_EACH_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_BINARY_SEQ_FOR_EACH_HPP + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_0(macro, data) +/**/ + +#include <boost/parameter/aux_/preprocessor/for_each_pred.hpp> +#include <boost/parameter/aux_/preprocessor/binary_seq_for_each_inc.hpp> +#include <boost/preprocessor/repetition/for.hpp> + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_1(macro, data) \ + BOOST_PP_FOR( \ + (data)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_2 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_1_N \ + , macro \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_2(macro, data) \ + BOOST_PP_FOR( \ + (data)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_3 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_1_N \ + , macro \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_3(macro, data) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_4 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_1_N \ + , macro \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_4(macro, data) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_5 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_1_N \ + , macro \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_5(macro, data) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_6 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_1_N \ + , macro \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_6(macro, data) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_7 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_1_N \ + , macro \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_7(macro, data) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_8 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_1_N \ + , macro \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_8(macro, data) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_9 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_2_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_9 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_2_N \ + , macro \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_9(macro, data) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_10 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_3_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_10 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_3_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_10 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_3_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_10 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_3_N \ + , macro \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_10(macro, data) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_11 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_4_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_11 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_4_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_11 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_4_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_11 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_4_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_11 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_4_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_11 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_4_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_11 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_4_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_11 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_4_N \ + , macro \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_11(macro, data) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_12(macro, data) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_13(macro, data) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_14(macro, data) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) +/**/ + +#include <boost/preprocessor/seq/elem.hpp> +#include <boost/preprocessor/cat.hpp> + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH(n, seq) \ + BOOST_PP_CAT(BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_, n)( \ + BOOST_PP_SEQ_ELEM(0, seq), BOOST_PP_SEQ_ELEM(1, seq) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_Z(z, n, seq) \ + BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH(n, seq) +/**/ + +#endif // include guard + diff --git a/boost/parameter/aux_/preprocessor/binary_seq_for_each_inc.hpp b/boost/parameter/aux_/preprocessor/binary_seq_for_each_inc.hpp new file mode 100644 index 0000000000..7e97546739 --- /dev/null +++ b/boost/parameter/aux_/preprocessor/binary_seq_for_each_inc.hpp @@ -0,0 +1,1796 @@ +// Copyright Cromwell D. Enage 2017. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_BINARY_SEQ_FOR_EACH_INC_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_BINARY_SEQ_FOR_EACH_INC_HPP + +#include <boost/parameter/aux_/preprocessor/inc_binary_seq.hpp> +#include <boost/preprocessor/seq/seq.hpp> +#include <boost/preprocessor/seq/push_front.hpp> + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_1_N(r, seq) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_TAIL(seq)) \ + , BOOST_PP_SEQ_HEAD(seq) \ + ) +/**/ + +#include <boost/parameter/aux_/preprocessor/seq_merge.hpp> +#include <boost/preprocessor/seq/first_n.hpp> +#include <boost/preprocessor/seq/rest_n.hpp> + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_2_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(2, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(2, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_3_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(3, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(3, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_4_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(4, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(4, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(5, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(5, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(6, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(6, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(7, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(7, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(8, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(8, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_9_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(9, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(9, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_10_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(10, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(10, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_11_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(11, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(11, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_12_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(12, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(12, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_13_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(13, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(13, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_14_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(14, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(14, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_15_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(15, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(15, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_16_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(16, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(16, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_17_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(17, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(17, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_18_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(18, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(18, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_19_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(19, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(19, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_20_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(20, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(20, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_21_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(21, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(21, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_22_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(22, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(22, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_23_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(23, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(23, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_24_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(24, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(24, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_25_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(25, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(25, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_26_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(26, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(26, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_27_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(27, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(27, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_28_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(28, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(28, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_29_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(29, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(29, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_30_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(30, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(30, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_31_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(31, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(31, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_32_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(32, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(32, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_33_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(33, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(33, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_34_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(34, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(34, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_35_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(35, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(35, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_36_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(36, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(36, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_37_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(37, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(37, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_38_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(38, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(38, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_39_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(39, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(39, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_40_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(40, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(40, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_41_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(41, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(41, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_42_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(42, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(42, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_43_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(43, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(43, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_44_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(44, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(44, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_45_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(45, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(45, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_46_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(46, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(46, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_47_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(47, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(47, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_48_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(48, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(48, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_49_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(49, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(49, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_50_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(50, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(50, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_51_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(51, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(51, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_52_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(52, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(52, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_53_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(53, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(53, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_54_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(54, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(54, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_55_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(55, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(55, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_56_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(56, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(56, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_57_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(57, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(57, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_58_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(58, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(58, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_59_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(59, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(59, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_60_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(60, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(60, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_61_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(61, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(61, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_62_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(62, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(62, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_63_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(63, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(63, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_64_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(64, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(64, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_65_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(65, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(65, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_66_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(66, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(66, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_67_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(67, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(67, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_68_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(68, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(68, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_69_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(69, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(69, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_70_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(70, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(70, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_71_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(71, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(71, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_72_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(72, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(72, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_73_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(73, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(73, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_74_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(74, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(74, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_75_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(75, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(75, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_76_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(76, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(76, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_77_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(77, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(77, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_78_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(78, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(78, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_79_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(79, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(79, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_80_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(80, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(80, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_81_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(81, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(81, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_82_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(82, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(82, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_83_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(83, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(83, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_84_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(84, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(84, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_85_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(85, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(85, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_86_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(86, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(86, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_87_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(87, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(87, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_88_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(88, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(88, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_89_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(89, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(89, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_90_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(90, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(90, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_91_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(91, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(91, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_92_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(92, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(92, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_93_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(93, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(93, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_94_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(94, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(94, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_95_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(95, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(95, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_96_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(96, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(96, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_97_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(97, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(97, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_98_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(98, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(98, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_99_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(99, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(99, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_100_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(100, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(100, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_101_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(101, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(101, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_102_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(102, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(102, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_103_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(103, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(103, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_104_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(104, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(104, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_105_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(105, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(105, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_106_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(106, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(106, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_107_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(107, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(107, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_108_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(108, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(108, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_109_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(109, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(109, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_110_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(110, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(110, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_111_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(111, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(111, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_112_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(112, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(112, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_113_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(113, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(113, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_114_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(114, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(114, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_115_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(115, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(115, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_116_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(116, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(116, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_117_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(117, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(117, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_118_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(118, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(118, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_119_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(119, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(119, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_120_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(120, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(120, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_121_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(121, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(121, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_122_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(122, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(122, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_123_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(123, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(123, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_124_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(124, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(124, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_125_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(125, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(125, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_126_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(126, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(126, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_127_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(127, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(127, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_128_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(128, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(128, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_129_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(129, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(129, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_130_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(130, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(130, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_131_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(131, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(131, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_132_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(132, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(132, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_133_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(133, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(133, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_134_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(134, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(134, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_135_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(135, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(135, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_136_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(136, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(136, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_137_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(137, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(137, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_138_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(138, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(138, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_139_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(139, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(139, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_140_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(140, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(140, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_141_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(11, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(141, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_142_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(142, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(142, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_143_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(143, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(143, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_144_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(144, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(144, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_145_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(145, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(145, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_146_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(146, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(146, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_147_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(147, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(147, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_148_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(148, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(148, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_149_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(149, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(149, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_150_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(150, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(150, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_151_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(151, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(151, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_152_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(152, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(152, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_153_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(153, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(153, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_154_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(154, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(154, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_155_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(155, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(155, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_156_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(156, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(156, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_157_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(157, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(157, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_158_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(158, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(158, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_159_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(159, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(159, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_160_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(160, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(160, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_161_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(161, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(161, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_162_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(162, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(162, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_163_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(163, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(163, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_164_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(164, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(164, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_165_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(165, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(165, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_166_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(166, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(166, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_167_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(167, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(167, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_168_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(168, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(168, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_169_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(169, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(169, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_170_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(170, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(170, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_171_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(171, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(171, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_172_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(172, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(172, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_173_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(173, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(173, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_174_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(174, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(174, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_175_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(175, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(175, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_176_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(176, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(176, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_177_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(177, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(177, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_178_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(178, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(178, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_179_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(179, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(179, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_180_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(180, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(180, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_181_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(181, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(181, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_182_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(182, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(182, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_183_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(183, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(183, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_184_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(184, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(184, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_185_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(185, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(185, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_186_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(186, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(186, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_187_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(187, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(187, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_188_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(188, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(188, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_189_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(189, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(189, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_190_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(190, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(190, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_191_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(191, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(191, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_192_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(192, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(192, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_193_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(193, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(193, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_194_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(194, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(194, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_195_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(195, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(195, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_196_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(196, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(196, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_197_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(197, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(197, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_198_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(198, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(198, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_199_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(199, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(199, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_200_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(200, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(200, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_201_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(201, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(201, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_202_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(202, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(202, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_203_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(203, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(203, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_204_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(204, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(204, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_205_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(205, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(205, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_206_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(206, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(206, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_207_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(207, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(207, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_208_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(208, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(208, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_209_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(209, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(209, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_210_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(210, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(210, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_211_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(211, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(211, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_212_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(212, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(212, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_213_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(213, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(213, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_214_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(214, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(214, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_215_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(215, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(215, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_216_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(216, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(216, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_217_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(217, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(217, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_218_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(218, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(218, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_219_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(219, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(219, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_220_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(220, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(220, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_221_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(221, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(221, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_222_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(222, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(222, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_223_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(223, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(223, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_224_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(224, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(224, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_225_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(225, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(225, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_226_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(226, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(226, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_227_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(227, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(227, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_228_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(228, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(228, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_229_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(229, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(229, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_230_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(230, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(230, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_231_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(231, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(231, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_232_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(232, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(232, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_233_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(233, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(233, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_234_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(234, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(234, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_235_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(235, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(235, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_236_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(236, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(236, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_237_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(237, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(237, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_238_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(238, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(238, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_239_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(239, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(239, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_240_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(240, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(240, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_241_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(241, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(241, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_242_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(242, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(242, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_243_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(243, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(243, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_244_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(244, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(244, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_245_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(245, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(245, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_246_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(246, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(246, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_247_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(247, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(247, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_248_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(248, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(248, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_249_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(249, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(249, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_250_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(250, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(250, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_251_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(251, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(251, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_252_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(252, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(252, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_253_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(253, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(253, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_254_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(254, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(254, seq)) \ + ) +/**/ + +#endif // include guard + diff --git a/boost/parameter/aux_/preprocessor/binary_seq_to_args.hpp b/boost/parameter/aux_/preprocessor/binary_seq_to_args.hpp new file mode 100644 index 0000000000..4b4ca6290a --- /dev/null +++ b/boost/parameter/aux_/preprocessor/binary_seq_to_args.hpp @@ -0,0 +1,65 @@ +// Copyright Cromwell D. Enage 2017. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_BINARY_SEQ_TO_ARGS_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_BINARY_SEQ_TO_ARGS_HPP + +#include <boost/preprocessor/seq/elem.hpp> +#include <boost/preprocessor/cat.hpp> + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARG_0_1(n, prefix_seq) \ + BOOST_PP_CAT(BOOST_PP_SEQ_ELEM(0, prefix_seq), n) const& +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARG_1_1(n, prefix_seq) \ + BOOST_PP_CAT(BOOST_PP_SEQ_ELEM(0, prefix_seq), n)& +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARG_0_2(n, prefix_seq) \ + BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARG_0_1(n, prefix_seq) \ + BOOST_PP_CAT(BOOST_PP_SEQ_ELEM(1, prefix_seq), n) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARG_1_2(n, prefix_seq) \ + BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARG_1_1(n, prefix_seq) \ + BOOST_PP_CAT(BOOST_PP_SEQ_ELEM(1, prefix_seq), n) +/**/ + +#include <boost/preprocessor/seq/size.hpp> + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARG_0(prefix_seq) \ + BOOST_PP_CAT( \ + BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARG_0_ \ + , BOOST_PP_SEQ_SIZE(prefix_seq) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARG_1(prefix_seq) \ + BOOST_PP_CAT( \ + BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARG_1_ \ + , BOOST_PP_SEQ_SIZE(prefix_seq) \ + ) +/**/ + +#include <boost/parameter/aux_/preprocessor/convert_binary_seq.hpp> + +// This macro converts the specified Boost.Preprocessor sequence of 1s and 0s +// into a formal function parameter list. +// +// Example: +// BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARGS((1)(0)(1)(0), (P)(p)) +// expands to +// P0 & p0, P1 const& p1, P2 & p2, P3 const& p3 +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARGS(binary_seq, prefix_seq) \ + BOOST_PARAMETER_AUX_PP_CONVERT_BINARY_SEQ( \ + binary_seq \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARG_0(prefix_seq) \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARG_1(prefix_seq) \ + , prefix_seq \ + ) +/**/ + +#endif // include guard + diff --git a/boost/parameter/aux_/preprocessor/convert_binary_seq.hpp b/boost/parameter/aux_/preprocessor/convert_binary_seq.hpp new file mode 100644 index 0000000000..64832b3d4b --- /dev/null +++ b/boost/parameter/aux_/preprocessor/convert_binary_seq.hpp @@ -0,0 +1,57 @@ +// Copyright Cromwell D. Enage 2013. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_CONVERT_BINARY_SEQ_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_CONVERT_BINARY_SEQ_HPP + +#include <boost/preprocessor/seq/size.hpp> +#include <boost/preprocessor/seq/push_back.hpp> + +#define BOOST_PARAMETER_AUX_PP_AUGMENT_BINARY_SEQ_INDEX_FOLD_OP(s, seq, idx) \ + BOOST_PP_SEQ_PUSH_BACK(seq, (idx, BOOST_PP_SEQ_SIZE(seq))) +/**/ + +#include <boost/preprocessor/control/iif.hpp> +#include <boost/preprocessor/seq/elem.hpp> +#include <boost/preprocessor/tuple/elem.hpp> + +#define BOOST_PARAMETER_AUX_PP_CONVERT_BINARY_SEQ_FOLD_OP(s, seq, elem) \ + ( \ + BOOST_PP_SEQ_PUSH_BACK( \ + BOOST_PP_SEQ_ELEM(0, seq) \ + , BOOST_PP_IIF( \ + BOOST_PP_TUPLE_ELEM(2, 0, elem) \ + , BOOST_PP_SEQ_ELEM(2, seq) \ + , BOOST_PP_SEQ_ELEM(1, seq) \ + )(BOOST_PP_TUPLE_ELEM(2, 1, elem), BOOST_PP_SEQ_ELEM(3, seq)) \ + ) \ + )(BOOST_PP_SEQ_ELEM(1, seq))(BOOST_PP_SEQ_ELEM(2, seq)) \ + (BOOST_PP_SEQ_ELEM(3, seq)) +/**/ + +#include <boost/parameter/aux_/preprocessor/seq_enum.hpp> +#include <boost/preprocessor/facilities/empty.hpp> +#include <boost/preprocessor/seq/seq.hpp> +#include <boost/preprocessor/seq/fold_left.hpp> + +#define BOOST_PARAMETER_AUX_PP_CONVERT_BINARY_SEQ(seq, macro0, macro1, data) \ + BOOST_PARAMETER_SEQ_ENUM( \ + BOOST_PP_SEQ_ELEM( \ + 0 \ + , BOOST_PP_SEQ_FOLD_LEFT( \ + BOOST_PARAMETER_AUX_PP_CONVERT_BINARY_SEQ_FOLD_OP \ + , (BOOST_PP_SEQ_NIL)(macro0)(macro1)(data) \ + , BOOST_PP_SEQ_FOLD_LEFT( \ + BOOST_PARAMETER_AUX_PP_AUGMENT_BINARY_SEQ_INDEX_FOLD_OP \ + , BOOST_PP_EMPTY() \ + , seq \ + ) \ + ) \ + ) \ + ) +/**/ + +#endif // include guard + diff --git a/boost/parameter/aux_/preprocessor/flatten.hpp b/boost/parameter/aux_/preprocessor/flatten.hpp index 5d7615e3f3..876a928bfd 100644 --- a/boost/parameter/aux_/preprocessor/flatten.hpp +++ b/boost/parameter/aux_/preprocessor/flatten.hpp @@ -1,115 +1,12 @@ -// Copyright Daniel Wallin 2005. Use, modification and distribution is -// subject to the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// Copyright Daniel Wallin 2005. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) #ifndef BOOST_PARAMETER_FLATTEN_051217_HPP -# define BOOST_PARAMETER_FLATTEN_051217_HPP +#define BOOST_PARAMETER_FLATTEN_051217_HPP -# include <boost/preprocessor/tuple/elem.hpp> -# include <boost/preprocessor/tuple/rem.hpp> -# include <boost/preprocessor/cat.hpp> -# include <boost/preprocessor/seq/for_each.hpp> -# include <boost/preprocessor/seq/for_each_i.hpp> -# include <boost/preprocessor/identity.hpp> -# include <boost/preprocessor/selection/max.hpp> -# include <boost/preprocessor/arithmetic/sub.hpp> -# include <boost/preprocessor/repetition/enum_trailing.hpp> -# include <boost/parameter/aux_/preprocessor/for_each.hpp> +#include <boost/parameter/aux_/preprocessor/impl/flatten.hpp> -# define BOOST_PARAMETER_FLATTEN_SPLIT_required required, -# define BOOST_PARAMETER_FLATTEN_SPLIT_optional optional, -# define BOOST_PARAMETER_FLATTEN_SPLIT_deduced deduced, - -# define BOOST_PARAMETER_FLATTEN_SPLIT(sub) \ - BOOST_PP_CAT(BOOST_PARAMETER_FLATTEN_SPLIT_, sub) - -# define BOOST_PARAMETER_FLATTEN_QUALIFIER(sub) \ - BOOST_PP_SPLIT(0, BOOST_PARAMETER_FLATTEN_SPLIT(sub)) - -# define BOOST_PARAMETER_FLATTEN_ARGS(sub) \ - BOOST_PP_SPLIT(1, BOOST_PARAMETER_FLATTEN_SPLIT(sub)) - -# define BOOST_PARAMETER_FLATTEN_ARITY_optional(arities) \ - BOOST_PP_TUPLE_ELEM(3,0,arities) - -# define BOOST_PARAMETER_FLATTEN_ARITY_required(arities) \ - BOOST_PP_TUPLE_ELEM(3,1,arities) - -# define BOOST_PARAMETER_FLATTEN_SPEC0_DUMMY_ELEM(z, n, data) ~ -# define BOOST_PARAMETER_FLATTEN_SPEC0(r, n, elem, data) \ - (( \ - BOOST_PP_TUPLE_ELEM(3,2,data) \ - , BOOST_PP_TUPLE_REM(BOOST_PP_TUPLE_ELEM(3,0,data)) elem \ - BOOST_PP_ENUM_TRAILING( \ - BOOST_PP_SUB( \ - BOOST_PP_TUPLE_ELEM(3,1,data) \ - , BOOST_PP_TUPLE_ELEM(3,0,data) \ - ) \ - , BOOST_PARAMETER_FLATTEN_SPEC0_DUMMY_ELEM \ - , ~ \ - ) \ - )) - -# define BOOST_PARAMETER_FLATTEN_SPEC_AUX(r, arity, max_arity, spec, transform) \ - BOOST_PARAMETER_FOR_EACH_R( \ - r \ - , arity \ - , BOOST_PARAMETER_FLATTEN_ARGS(spec) \ - , (arity, max_arity, transform(BOOST_PARAMETER_FLATTEN_QUALIFIER(spec))) \ - , BOOST_PARAMETER_FLATTEN_SPEC0 \ - ) - -# define BOOST_PARAMETER_FLATTEN_IDENTITY(x) x - -# define BOOST_PARAMETER_FLATTEN_SPEC_optional(r, arities, spec) \ - BOOST_PARAMETER_FLATTEN_SPEC_AUX( \ - r \ - , BOOST_PP_CAT( \ - BOOST_PARAMETER_FLATTEN_ARITY_, BOOST_PARAMETER_FLATTEN_QUALIFIER(spec) \ - )(arities) \ - , BOOST_PP_TUPLE_ELEM(3,2,arities) \ - , spec \ - , BOOST_PARAMETER_FLATTEN_IDENTITY \ - ) - -# define BOOST_PARAMETER_FLATTEN_SPEC_required(r, arities, spec) \ - BOOST_PARAMETER_FLATTEN_SPEC_optional(r, arities, spec) - -# define BOOST_PARAMETER_FLATTEN_SPEC_AS_DEDUCED(x) BOOST_PP_CAT(deduced_,x) - -# define BOOST_PARAMETER_FLATTEN_SPEC_deduced_M(r, arities, n, spec) \ - BOOST_PARAMETER_FLATTEN_SPEC_AUX( \ - r \ - , BOOST_PP_CAT( \ - BOOST_PARAMETER_FLATTEN_ARITY_, BOOST_PARAMETER_FLATTEN_QUALIFIER(spec) \ - )(arities) \ - , BOOST_PP_TUPLE_ELEM(3,2,arities) \ - , spec \ - , BOOST_PARAMETER_FLATTEN_SPEC_AS_DEDUCED \ - ) - -# define BOOST_PARAMETER_FLATTEN_SPEC_deduced(r, arities, spec) \ - BOOST_PP_SEQ_FOR_EACH_I_R( \ - r \ - , BOOST_PARAMETER_FLATTEN_SPEC_deduced_M \ - , arities \ - , BOOST_PARAMETER_FLATTEN_ARGS(spec) \ - ) - -# define BOOST_PARAMETER_FLATTEN_SPEC(r, arities, spec) \ - BOOST_PP_CAT( \ - BOOST_PARAMETER_FLATTEN_SPEC_, BOOST_PARAMETER_FLATTEN_QUALIFIER(spec) \ - )(r, arities, spec) - -# define BOOST_PARAMETER_FLATTEN(optional_arity, required_arity, wanted_arity, specs) \ - BOOST_PP_SEQ_FOR_EACH( \ - BOOST_PARAMETER_FLATTEN_SPEC \ - , ( \ - optional_arity, required_arity \ - , wanted_arity \ - ) \ - , specs \ - ) - -#endif // BOOST_PARAMETER_FLATTEN_051217_HPP +#endif // include guard diff --git a/boost/parameter/aux_/preprocessor/for_each.hpp b/boost/parameter/aux_/preprocessor/for_each.hpp index 0eb1f702db..221f45a785 100644 --- a/boost/parameter/aux_/preprocessor/for_each.hpp +++ b/boost/parameter/aux_/preprocessor/for_each.hpp @@ -1,103 +1,12 @@ -// Copyright Daniel Wallin 2005. Use, modification and distribution is -// subject to the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// Copyright Daniel Wallin 2005. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) #ifndef BOOST_PARAMETER_FOR_EACH_051217_HPP -# define BOOST_PARAMETER_FOR_EACH_051217_HPP +#define BOOST_PARAMETER_FOR_EACH_051217_HPP -# include <boost/preprocessor/cat.hpp> -# include <boost/preprocessor/detail/split.hpp> -# include <boost/preprocessor/logical/not.hpp> -# include <boost/preprocessor/facilities/is_empty.hpp> -# include <boost/preprocessor/tuple/eat.hpp> -# include <boost/preprocessor/arithmetic/inc.hpp> -# include <boost/preprocessor/repeat.hpp> -# include <boost/preprocessor/punctuation/comma_if.hpp> -# include <boost/preprocessor/for.hpp> -# include <boost/preprocessor/repetition/deduce_r.hpp> +#include <boost/parameter/aux_/preprocessor/impl/for_each.hpp> -# define BOOST_PARAMETER_FOR_EACH_head_aux2(x,y) (x,y), ~ -# define BOOST_PARAMETER_FOR_EACH_head_aux3(x,y,z) (x,y,z), ~ -# define BOOST_PARAMETER_FOR_EACH_head_aux4(x,y,z,u) (x,y,z,u), ~ -# define BOOST_PARAMETER_FOR_EACH_head(n,x) \ - BOOST_PP_SPLIT(0, BOOST_PP_CAT(BOOST_PARAMETER_FOR_EACH_head_aux,n) x) - -# define BOOST_PARAMETER_FOR_EACH_pred_aux_BOOST_PARAMETER_FOR_EACH_END_SENTINEL -# define BOOST_PARAMETER_FOR_EACH_pred_aux_check(x) \ - BOOST_PP_NOT(BOOST_PP_IS_EMPTY( \ - BOOST_PP_CAT(BOOST_PARAMETER_FOR_EACH_pred_aux_, x) \ - )), ~ - -# define BOOST_PARAMETER_FOR_EACH_pred_aux2(x,y) \ - BOOST_PARAMETER_FOR_EACH_pred_aux_check(x) -# define BOOST_PARAMETER_FOR_EACH_pred_aux3(x,y,z) \ - BOOST_PARAMETER_FOR_EACH_pred_aux_check(x) -# define BOOST_PARAMETER_FOR_EACH_pred_aux4(x,y,z,u) \ - BOOST_PARAMETER_FOR_EACH_pred_aux_check(x) - -# define BOOST_PARAMETER_FOR_EACH_pred_aux0(n,x) \ - BOOST_PP_CAT(BOOST_PARAMETER_FOR_EACH_pred_aux,n) x - -# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() -# define BOOST_PARAMETER_FOR_EACH_pred_SPLIT_FIRST(x) \ - BOOST_PP_SPLIT(0, x) - -# define BOOST_PARAMETER_FOR_EACH_pred(r, state) \ - BOOST_PARAMETER_FOR_EACH_pred_SPLIT_FIRST( \ - BOOST_PARAMETER_FOR_EACH_pred_aux0( \ - BOOST_PP_TUPLE_ELEM(5,3,state) \ - , BOOST_PP_TUPLE_ELEM(5,0,state) \ - ) \ - ) -# else -# define BOOST_PARAMETER_FOR_EACH_pred(r, state) \ - BOOST_PP_SPLIT( \ - 0 \ - , BOOST_PARAMETER_FOR_EACH_pred_aux0( \ - BOOST_PP_TUPLE_ELEM(5,3,state) \ - , BOOST_PP_TUPLE_ELEM(5,0,state) \ - ) \ - ) -# endif - -# define BOOST_PARAMETER_FOR_EACH_op(r, state) \ - ( \ - BOOST_PP_TUPLE_EAT(BOOST_PP_TUPLE_ELEM(5,3,state)) \ - BOOST_PP_TUPLE_ELEM(5,0,state) \ - , BOOST_PP_TUPLE_ELEM(5,1,state) \ - , BOOST_PP_TUPLE_ELEM(5,2,state) \ - , BOOST_PP_TUPLE_ELEM(5,3,state) \ - , BOOST_PP_INC(BOOST_PP_TUPLE_ELEM(5,4,state)) \ - ) - -# define BOOST_PARAMETER_FOR_EACH_macro(r, state) \ - BOOST_PP_TUPLE_ELEM(5,2,state)( \ - r \ - , BOOST_PP_TUPLE_ELEM(5,4,state) \ - , BOOST_PARAMETER_FOR_EACH_head( \ - BOOST_PP_TUPLE_ELEM(5,3,state) \ - , BOOST_PP_TUPLE_ELEM(5,0,state) \ - ) \ - , BOOST_PP_TUPLE_ELEM(5,1,state) \ - ) - -# define BOOST_PARAMETER_FOR_EACH_build_end_sentinel(z,n,text) \ - BOOST_PP_COMMA_IF(n) BOOST_PARAMETER_FOR_EACH_END_SENTINEL -# define BOOST_PARAMETER_FOR_EACH_build_end_sentinel_tuple(arity) \ - ( \ - BOOST_PP_REPEAT(arity, BOOST_PARAMETER_FOR_EACH_build_end_sentinel, _) \ - ) - -# define BOOST_PARAMETER_FOR_EACH_R(r, arity, list, data, macro) \ - BOOST_PP_CAT(BOOST_PP_FOR_, r)( \ - (list BOOST_PARAMETER_FOR_EACH_build_end_sentinel_tuple(arity), data, macro, arity, 0) \ - , BOOST_PARAMETER_FOR_EACH_pred \ - , BOOST_PARAMETER_FOR_EACH_op \ - , BOOST_PARAMETER_FOR_EACH_macro \ - ) - -# define BOOST_PARAMETER_FOR_EACH(arity, list, data, macro) \ - BOOST_PARAMETER_FOR_EACH_R(BOOST_PP_DEDUCE_R(), arity, list, data, macro) - -#endif // BOOST_PARAMETER_FOR_EACH_051217_HPP +#endif // include guard diff --git a/boost/parameter/aux_/preprocessor/for_each_pred.hpp b/boost/parameter/aux_/preprocessor/for_each_pred.hpp new file mode 100644 index 0000000000..7d4c6368e6 --- /dev/null +++ b/boost/parameter/aux_/preprocessor/for_each_pred.hpp @@ -0,0 +1,1029 @@ +// Copyright Cromwell D. Enage 2017. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_FOR_EACH_PRED_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_FOR_EACH_PRED_HPP + +#include <boost/preprocessor/comparison/not_equal.hpp> +#include <boost/preprocessor/seq/size.hpp> + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_1(r, seq) \ + BOOST_PP_NOT_EQUAL(2, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_2(r, seq) \ + BOOST_PP_NOT_EQUAL(3, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_3(r, seq) \ + BOOST_PP_NOT_EQUAL(4, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_4(r, seq) \ + BOOST_PP_NOT_EQUAL(5, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_5(r, seq) \ + BOOST_PP_NOT_EQUAL(6, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_6(r, seq) \ + BOOST_PP_NOT_EQUAL(7, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_7(r, seq) \ + BOOST_PP_NOT_EQUAL(8, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_8(r, seq) \ + BOOST_PP_NOT_EQUAL(9, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_9(r, seq) \ + BOOST_PP_NOT_EQUAL(10, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_10(r, seq) \ + BOOST_PP_NOT_EQUAL(11, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_11(r, seq) \ + BOOST_PP_NOT_EQUAL(12, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12(r, seq) \ + BOOST_PP_NOT_EQUAL(13, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13(r, seq) \ + BOOST_PP_NOT_EQUAL(14, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14(r, seq) \ + BOOST_PP_NOT_EQUAL(15, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15(r, seq) \ + BOOST_PP_NOT_EQUAL(16, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_16(r, seq) \ + BOOST_PP_NOT_EQUAL(17, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_17(r, seq) \ + BOOST_PP_NOT_EQUAL(18, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_18(r, seq) \ + BOOST_PP_NOT_EQUAL(19, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_19(r, seq) \ + BOOST_PP_NOT_EQUAL(20, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_20(r, seq) \ + BOOST_PP_NOT_EQUAL(21, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_21(r, seq) \ + BOOST_PP_NOT_EQUAL(22, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_22(r, seq) \ + BOOST_PP_NOT_EQUAL(23, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_23(r, seq) \ + BOOST_PP_NOT_EQUAL(24, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_24(r, seq) \ + BOOST_PP_NOT_EQUAL(25, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_25(r, seq) \ + BOOST_PP_NOT_EQUAL(26, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_26(r, seq) \ + BOOST_PP_NOT_EQUAL(27, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_27(r, seq) \ + BOOST_PP_NOT_EQUAL(28, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_28(r, seq) \ + BOOST_PP_NOT_EQUAL(29, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_29(r, seq) \ + BOOST_PP_NOT_EQUAL(30, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_30(r, seq) \ + BOOST_PP_NOT_EQUAL(31, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_31(r, seq) \ + BOOST_PP_NOT_EQUAL(32, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_32(r, seq) \ + BOOST_PP_NOT_EQUAL(33, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_33(r, seq) \ + BOOST_PP_NOT_EQUAL(34, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_34(r, seq) \ + BOOST_PP_NOT_EQUAL(35, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_35(r, seq) \ + BOOST_PP_NOT_EQUAL(36, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_36(r, seq) \ + BOOST_PP_NOT_EQUAL(37, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_37(r, seq) \ + BOOST_PP_NOT_EQUAL(38, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_38(r, seq) \ + BOOST_PP_NOT_EQUAL(39, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_39(r, seq) \ + BOOST_PP_NOT_EQUAL(40, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_40(r, seq) \ + BOOST_PP_NOT_EQUAL(41, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_41(r, seq) \ + BOOST_PP_NOT_EQUAL(42, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_42(r, seq) \ + BOOST_PP_NOT_EQUAL(43, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_43(r, seq) \ + BOOST_PP_NOT_EQUAL(44, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_44(r, seq) \ + BOOST_PP_NOT_EQUAL(45, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_45(r, seq) \ + BOOST_PP_NOT_EQUAL(46, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_46(r, seq) \ + BOOST_PP_NOT_EQUAL(47, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_47(r, seq) \ + BOOST_PP_NOT_EQUAL(48, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_48(r, seq) \ + BOOST_PP_NOT_EQUAL(49, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_49(r, seq) \ + BOOST_PP_NOT_EQUAL(50, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_50(r, seq) \ + BOOST_PP_NOT_EQUAL(51, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_51(r, seq) \ + BOOST_PP_NOT_EQUAL(52, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_52(r, seq) \ + BOOST_PP_NOT_EQUAL(53, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_53(r, seq) \ + BOOST_PP_NOT_EQUAL(54, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_54(r, seq) \ + BOOST_PP_NOT_EQUAL(55, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_55(r, seq) \ + BOOST_PP_NOT_EQUAL(56, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_56(r, seq) \ + BOOST_PP_NOT_EQUAL(57, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_57(r, seq) \ + BOOST_PP_NOT_EQUAL(58, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_58(r, seq) \ + BOOST_PP_NOT_EQUAL(59, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_59(r, seq) \ + BOOST_PP_NOT_EQUAL(60, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_60(r, seq) \ + BOOST_PP_NOT_EQUAL(61, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_61(r, seq) \ + BOOST_PP_NOT_EQUAL(62, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_62(r, seq) \ + BOOST_PP_NOT_EQUAL(63, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_63(r, seq) \ + BOOST_PP_NOT_EQUAL(64, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_64(r, seq) \ + BOOST_PP_NOT_EQUAL(65, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_65(r, seq) \ + BOOST_PP_NOT_EQUAL(66, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_66(r, seq) \ + BOOST_PP_NOT_EQUAL(67, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_67(r, seq) \ + BOOST_PP_NOT_EQUAL(68, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_68(r, seq) \ + BOOST_PP_NOT_EQUAL(69, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_69(r, seq) \ + BOOST_PP_NOT_EQUAL(70, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_70(r, seq) \ + BOOST_PP_NOT_EQUAL(71, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_71(r, seq) \ + BOOST_PP_NOT_EQUAL(72, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_72(r, seq) \ + BOOST_PP_NOT_EQUAL(73, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_73(r, seq) \ + BOOST_PP_NOT_EQUAL(74, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_74(r, seq) \ + BOOST_PP_NOT_EQUAL(75, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_75(r, seq) \ + BOOST_PP_NOT_EQUAL(76, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_76(r, seq) \ + BOOST_PP_NOT_EQUAL(77, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_77(r, seq) \ + BOOST_PP_NOT_EQUAL(78, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_78(r, seq) \ + BOOST_PP_NOT_EQUAL(79, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_79(r, seq) \ + BOOST_PP_NOT_EQUAL(80, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_80(r, seq) \ + BOOST_PP_NOT_EQUAL(81, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_81(r, seq) \ + BOOST_PP_NOT_EQUAL(82, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_82(r, seq) \ + BOOST_PP_NOT_EQUAL(83, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_83(r, seq) \ + BOOST_PP_NOT_EQUAL(84, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_84(r, seq) \ + BOOST_PP_NOT_EQUAL(85, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_85(r, seq) \ + BOOST_PP_NOT_EQUAL(86, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_86(r, seq) \ + BOOST_PP_NOT_EQUAL(87, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_87(r, seq) \ + BOOST_PP_NOT_EQUAL(88, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_88(r, seq) \ + BOOST_PP_NOT_EQUAL(89, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_89(r, seq) \ + BOOST_PP_NOT_EQUAL(90, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_90(r, seq) \ + BOOST_PP_NOT_EQUAL(91, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_91(r, seq) \ + BOOST_PP_NOT_EQUAL(92, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_92(r, seq) \ + BOOST_PP_NOT_EQUAL(93, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_93(r, seq) \ + BOOST_PP_NOT_EQUAL(94, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_94(r, seq) \ + BOOST_PP_NOT_EQUAL(95, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_95(r, seq) \ + BOOST_PP_NOT_EQUAL(96, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_96(r, seq) \ + BOOST_PP_NOT_EQUAL(97, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_97(r, seq) \ + BOOST_PP_NOT_EQUAL(98, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_98(r, seq) \ + BOOST_PP_NOT_EQUAL(99, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_99(r, seq) \ + BOOST_PP_NOT_EQUAL(100, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_100(r, seq) \ + BOOST_PP_NOT_EQUAL(101, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_101(r, seq) \ + BOOST_PP_NOT_EQUAL(102, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_102(r, seq) \ + BOOST_PP_NOT_EQUAL(103, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_103(r, seq) \ + BOOST_PP_NOT_EQUAL(104, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_104(r, seq) \ + BOOST_PP_NOT_EQUAL(105, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_105(r, seq) \ + BOOST_PP_NOT_EQUAL(106, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_106(r, seq) \ + BOOST_PP_NOT_EQUAL(107, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_107(r, seq) \ + BOOST_PP_NOT_EQUAL(108, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_108(r, seq) \ + BOOST_PP_NOT_EQUAL(109, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_109(r, seq) \ + BOOST_PP_NOT_EQUAL(110, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_110(r, seq) \ + BOOST_PP_NOT_EQUAL(111, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_111(r, seq) \ + BOOST_PP_NOT_EQUAL(112, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_112(r, seq) \ + BOOST_PP_NOT_EQUAL(113, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_113(r, seq) \ + BOOST_PP_NOT_EQUAL(114, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_114(r, seq) \ + BOOST_PP_NOT_EQUAL(115, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_115(r, seq) \ + BOOST_PP_NOT_EQUAL(116, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_116(r, seq) \ + BOOST_PP_NOT_EQUAL(117, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_117(r, seq) \ + BOOST_PP_NOT_EQUAL(118, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_118(r, seq) \ + BOOST_PP_NOT_EQUAL(119, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_119(r, seq) \ + BOOST_PP_NOT_EQUAL(120, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_120(r, seq) \ + BOOST_PP_NOT_EQUAL(121, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_121(r, seq) \ + BOOST_PP_NOT_EQUAL(122, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_122(r, seq) \ + BOOST_PP_NOT_EQUAL(123, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_123(r, seq) \ + BOOST_PP_NOT_EQUAL(124, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_124(r, seq) \ + BOOST_PP_NOT_EQUAL(125, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_125(r, seq) \ + BOOST_PP_NOT_EQUAL(126, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_126(r, seq) \ + BOOST_PP_NOT_EQUAL(127, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_127(r, seq) \ + BOOST_PP_NOT_EQUAL(128, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_128(r, seq) \ + BOOST_PP_NOT_EQUAL(129, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_129(r, seq) \ + BOOST_PP_NOT_EQUAL(130, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_130(r, seq) \ + BOOST_PP_NOT_EQUAL(131, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_131(r, seq) \ + BOOST_PP_NOT_EQUAL(132, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_132(r, seq) \ + BOOST_PP_NOT_EQUAL(133, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_133(r, seq) \ + BOOST_PP_NOT_EQUAL(134, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_134(r, seq) \ + BOOST_PP_NOT_EQUAL(135, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_135(r, seq) \ + BOOST_PP_NOT_EQUAL(136, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_136(r, seq) \ + BOOST_PP_NOT_EQUAL(137, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_137(r, seq) \ + BOOST_PP_NOT_EQUAL(138, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_138(r, seq) \ + BOOST_PP_NOT_EQUAL(139, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_139(r, seq) \ + BOOST_PP_NOT_EQUAL(140, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_140(r, seq) \ + BOOST_PP_NOT_EQUAL(141, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_141(r, seq) \ + BOOST_PP_NOT_EQUAL(142, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_142(r, seq) \ + BOOST_PP_NOT_EQUAL(143, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_143(r, seq) \ + BOOST_PP_NOT_EQUAL(144, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_144(r, seq) \ + BOOST_PP_NOT_EQUAL(145, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_145(r, seq) \ + BOOST_PP_NOT_EQUAL(146, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_146(r, seq) \ + BOOST_PP_NOT_EQUAL(147, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_147(r, seq) \ + BOOST_PP_NOT_EQUAL(148, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_148(r, seq) \ + BOOST_PP_NOT_EQUAL(149, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_149(r, seq) \ + BOOST_PP_NOT_EQUAL(150, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_150(r, seq) \ + BOOST_PP_NOT_EQUAL(151, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_151(r, seq) \ + BOOST_PP_NOT_EQUAL(152, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_152(r, seq) \ + BOOST_PP_NOT_EQUAL(153, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_153(r, seq) \ + BOOST_PP_NOT_EQUAL(154, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_154(r, seq) \ + BOOST_PP_NOT_EQUAL(155, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_155(r, seq) \ + BOOST_PP_NOT_EQUAL(156, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_156(r, seq) \ + BOOST_PP_NOT_EQUAL(157, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_157(r, seq) \ + BOOST_PP_NOT_EQUAL(158, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_158(r, seq) \ + BOOST_PP_NOT_EQUAL(159, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_159(r, seq) \ + BOOST_PP_NOT_EQUAL(160, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_160(r, seq) \ + BOOST_PP_NOT_EQUAL(161, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_161(r, seq) \ + BOOST_PP_NOT_EQUAL(162, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_162(r, seq) \ + BOOST_PP_NOT_EQUAL(163, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_163(r, seq) \ + BOOST_PP_NOT_EQUAL(164, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_164(r, seq) \ + BOOST_PP_NOT_EQUAL(165, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_165(r, seq) \ + BOOST_PP_NOT_EQUAL(166, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_166(r, seq) \ + BOOST_PP_NOT_EQUAL(167, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_167(r, seq) \ + BOOST_PP_NOT_EQUAL(168, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_168(r, seq) \ + BOOST_PP_NOT_EQUAL(169, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_169(r, seq) \ + BOOST_PP_NOT_EQUAL(170, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_170(r, seq) \ + BOOST_PP_NOT_EQUAL(171, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_171(r, seq) \ + BOOST_PP_NOT_EQUAL(172, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_172(r, seq) \ + BOOST_PP_NOT_EQUAL(173, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_173(r, seq) \ + BOOST_PP_NOT_EQUAL(174, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_174(r, seq) \ + BOOST_PP_NOT_EQUAL(175, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_175(r, seq) \ + BOOST_PP_NOT_EQUAL(176, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_176(r, seq) \ + BOOST_PP_NOT_EQUAL(177, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_177(r, seq) \ + BOOST_PP_NOT_EQUAL(178, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_178(r, seq) \ + BOOST_PP_NOT_EQUAL(179, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_179(r, seq) \ + BOOST_PP_NOT_EQUAL(180, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_180(r, seq) \ + BOOST_PP_NOT_EQUAL(181, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_181(r, seq) \ + BOOST_PP_NOT_EQUAL(182, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_182(r, seq) \ + BOOST_PP_NOT_EQUAL(183, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_183(r, seq) \ + BOOST_PP_NOT_EQUAL(184, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_184(r, seq) \ + BOOST_PP_NOT_EQUAL(185, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_185(r, seq) \ + BOOST_PP_NOT_EQUAL(186, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_186(r, seq) \ + BOOST_PP_NOT_EQUAL(187, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_187(r, seq) \ + BOOST_PP_NOT_EQUAL(188, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_188(r, seq) \ + BOOST_PP_NOT_EQUAL(189, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_189(r, seq) \ + BOOST_PP_NOT_EQUAL(190, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_190(r, seq) \ + BOOST_PP_NOT_EQUAL(191, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_191(r, seq) \ + BOOST_PP_NOT_EQUAL(192, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_192(r, seq) \ + BOOST_PP_NOT_EQUAL(193, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_193(r, seq) \ + BOOST_PP_NOT_EQUAL(194, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_194(r, seq) \ + BOOST_PP_NOT_EQUAL(195, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_195(r, seq) \ + BOOST_PP_NOT_EQUAL(196, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_196(r, seq) \ + BOOST_PP_NOT_EQUAL(197, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_197(r, seq) \ + BOOST_PP_NOT_EQUAL(198, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_198(r, seq) \ + BOOST_PP_NOT_EQUAL(199, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_199(r, seq) \ + BOOST_PP_NOT_EQUAL(200, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_200(r, seq) \ + BOOST_PP_NOT_EQUAL(201, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_201(r, seq) \ + BOOST_PP_NOT_EQUAL(202, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_202(r, seq) \ + BOOST_PP_NOT_EQUAL(203, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_203(r, seq) \ + BOOST_PP_NOT_EQUAL(204, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_204(r, seq) \ + BOOST_PP_NOT_EQUAL(205, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_205(r, seq) \ + BOOST_PP_NOT_EQUAL(206, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_206(r, seq) \ + BOOST_PP_NOT_EQUAL(207, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_207(r, seq) \ + BOOST_PP_NOT_EQUAL(208, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_208(r, seq) \ + BOOST_PP_NOT_EQUAL(209, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_209(r, seq) \ + BOOST_PP_NOT_EQUAL(210, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_210(r, seq) \ + BOOST_PP_NOT_EQUAL(211, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_211(r, seq) \ + BOOST_PP_NOT_EQUAL(212, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_212(r, seq) \ + BOOST_PP_NOT_EQUAL(213, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_213(r, seq) \ + BOOST_PP_NOT_EQUAL(214, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_214(r, seq) \ + BOOST_PP_NOT_EQUAL(215, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_215(r, seq) \ + BOOST_PP_NOT_EQUAL(216, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_216(r, seq) \ + BOOST_PP_NOT_EQUAL(217, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_217(r, seq) \ + BOOST_PP_NOT_EQUAL(218, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_218(r, seq) \ + BOOST_PP_NOT_EQUAL(219, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_219(r, seq) \ + BOOST_PP_NOT_EQUAL(220, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_220(r, seq) \ + BOOST_PP_NOT_EQUAL(221, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_221(r, seq) \ + BOOST_PP_NOT_EQUAL(222, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_222(r, seq) \ + BOOST_PP_NOT_EQUAL(223, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_223(r, seq) \ + BOOST_PP_NOT_EQUAL(224, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_224(r, seq) \ + BOOST_PP_NOT_EQUAL(225, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_225(r, seq) \ + BOOST_PP_NOT_EQUAL(226, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_226(r, seq) \ + BOOST_PP_NOT_EQUAL(227, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_227(r, seq) \ + BOOST_PP_NOT_EQUAL(228, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_228(r, seq) \ + BOOST_PP_NOT_EQUAL(229, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_229(r, seq) \ + BOOST_PP_NOT_EQUAL(230, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_230(r, seq) \ + BOOST_PP_NOT_EQUAL(231, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_231(r, seq) \ + BOOST_PP_NOT_EQUAL(232, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_232(r, seq) \ + BOOST_PP_NOT_EQUAL(233, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_233(r, seq) \ + BOOST_PP_NOT_EQUAL(234, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_234(r, seq) \ + BOOST_PP_NOT_EQUAL(235, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_235(r, seq) \ + BOOST_PP_NOT_EQUAL(236, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_236(r, seq) \ + BOOST_PP_NOT_EQUAL(237, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_237(r, seq) \ + BOOST_PP_NOT_EQUAL(238, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_238(r, seq) \ + BOOST_PP_NOT_EQUAL(239, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_239(r, seq) \ + BOOST_PP_NOT_EQUAL(240, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_240(r, seq) \ + BOOST_PP_NOT_EQUAL(241, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_241(r, seq) \ + BOOST_PP_NOT_EQUAL(242, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_242(r, seq) \ + BOOST_PP_NOT_EQUAL(243, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_243(r, seq) \ + BOOST_PP_NOT_EQUAL(244, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_244(r, seq) \ + BOOST_PP_NOT_EQUAL(245, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_245(r, seq) \ + BOOST_PP_NOT_EQUAL(246, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_246(r, seq) \ + BOOST_PP_NOT_EQUAL(247, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_247(r, seq) \ + BOOST_PP_NOT_EQUAL(248, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_248(r, seq) \ + BOOST_PP_NOT_EQUAL(249, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_249(r, seq) \ + BOOST_PP_NOT_EQUAL(250, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_250(r, seq) \ + BOOST_PP_NOT_EQUAL(251, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_251(r, seq) \ + BOOST_PP_NOT_EQUAL(252, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_252(r, seq) \ + BOOST_PP_NOT_EQUAL(253, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_253(r, seq) \ + BOOST_PP_NOT_EQUAL(254, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_254(r, seq) \ + BOOST_PP_NOT_EQUAL(255, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#endif // include guard + diff --git a/boost/parameter/aux_/preprocessor/impl/argument_specs.hpp b/boost/parameter/aux_/preprocessor/impl/argument_specs.hpp new file mode 100644 index 0000000000..1efce38864 --- /dev/null +++ b/boost/parameter/aux_/preprocessor/impl/argument_specs.hpp @@ -0,0 +1,24 @@ +// Copyright Daniel Wallin 2006. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_ARGUMENT_SPECS_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_ARGUMENT_SPECS_HPP + +#include <boost/preprocessor/tuple/elem.hpp> + +// Accessor macros for the argument specs tuple. +#define BOOST_PARAMETER_FN_ARG_QUALIFIER(x) BOOST_PP_TUPLE_ELEM(4, 0, x) +#define BOOST_PARAMETER_FN_ARG_KEYWORD(x) BOOST_PP_TUPLE_ELEM(4, 1, x) +#define BOOST_PARAMETER_FN_ARG_PRED(x) BOOST_PP_TUPLE_ELEM(4, 2, x) +#define BOOST_PARAMETER_FN_ARG_DEFAULT(x) BOOST_PP_TUPLE_ELEM(4, 3, x) + +#include <boost/parameter/aux_/preprocessor/qualifier.hpp> + +#define BOOST_PARAMETER_FN_ARG_NAME(x) \ + BOOST_PARAMETER_UNQUALIFIED(BOOST_PARAMETER_FN_ARG_KEYWORD(x)) +/**/ + +#endif // include guard + diff --git a/boost/parameter/aux_/preprocessor/impl/arity_range.hpp b/boost/parameter/aux_/preprocessor/impl/arity_range.hpp new file mode 100644 index 0000000000..848648e4cc --- /dev/null +++ b/boost/parameter/aux_/preprocessor/impl/arity_range.hpp @@ -0,0 +1,42 @@ +// Copyright Daniel Wallin 2006. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_ARITY_RANGE_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_ARITY_RANGE_HPP + +// Helper macros for BOOST_PARAMETER_ARITY_RANGE. +#define BOOST_PARAMETER_ARITY_RANGE_M_optional(state) state +#define BOOST_PARAMETER_ARITY_RANGE_M_deduced_optional(state) state + +#include <boost/preprocessor/arithmetic/inc.hpp> + +#define BOOST_PARAMETER_ARITY_RANGE_M_required(state) BOOST_PP_INC(state) +#define BOOST_PARAMETER_ARITY_RANGE_M_deduced_required(state) \ + BOOST_PP_INC(state) +/**/ + +#include <boost/parameter/aux_/preprocessor/impl/argument_specs.hpp> +#include <boost/preprocessor/cat.hpp> + +#define BOOST_PARAMETER_ARITY_RANGE_M(s, state, x) \ + BOOST_PP_CAT( \ + BOOST_PARAMETER_ARITY_RANGE_M_ \ + , BOOST_PARAMETER_FN_ARG_QUALIFIER(x) \ + )(state) +/**/ + +#include <boost/preprocessor/seq/fold_left.hpp> +#include <boost/preprocessor/seq/size.hpp> + +// Calculates [begin, end) arity range. +#define BOOST_PARAMETER_ARITY_RANGE(args) \ + ( \ + BOOST_PP_SEQ_FOLD_LEFT(BOOST_PARAMETER_ARITY_RANGE_M, 0, args) \ + , BOOST_PP_INC(BOOST_PP_SEQ_SIZE(args)) \ + ) +/**/ + +#endif // include guard + diff --git a/boost/parameter/aux_/preprocessor/impl/flatten.hpp b/boost/parameter/aux_/preprocessor/impl/flatten.hpp new file mode 100644 index 0000000000..0d23a0c3b3 --- /dev/null +++ b/boost/parameter/aux_/preprocessor/impl/flatten.hpp @@ -0,0 +1,143 @@ +// Copyright Daniel Wallin 2005. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_FLATTEN_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_FLATTEN_HPP + +#define BOOST_PARAMETER_AUX_PP_FLATTEN_SPLIT_required required, +#define BOOST_PARAMETER_AUX_PP_FLATTEN_SPLIT_optional optional, +#define BOOST_PARAMETER_AUX_PP_FLATTEN_SPLIT_deduced deduced, +#define BOOST_PARAMETER_AUX_PP_FLATTEN_IDENTITY(x) x +#define BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC0_DUMMY_ELEM(z, n, data) ~ + +#include <boost/preprocessor/cat.hpp> + +#define BOOST_PARAMETER_AUX_PP_FLATTEN_SPLIT(sub) \ + BOOST_PP_CAT(BOOST_PARAMETER_AUX_PP_FLATTEN_SPLIT_, sub) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC_AS_DEDUCED(x) \ + BOOST_PP_CAT(deduced_, x) +/**/ + +#include <boost/preprocessor/detail/split.hpp> + +#define BOOST_PARAMETER_AUX_PP_FLATTEN_QUALIFIER(sub) \ + BOOST_PP_SPLIT(0, BOOST_PARAMETER_AUX_PP_FLATTEN_SPLIT(sub)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FLATTEN_ARGS(sub) \ + BOOST_PP_SPLIT(1, BOOST_PARAMETER_AUX_PP_FLATTEN_SPLIT(sub)) +/**/ + +#include <boost/preprocessor/tuple/elem.hpp> + +#define BOOST_PARAMETER_AUX_PP_FLATTEN_ARITY_optional(arities) \ + BOOST_PP_TUPLE_ELEM(3, 0, arities) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FLATTEN_ARITY_required(arities) \ + BOOST_PP_TUPLE_ELEM(3, 1, arities) +/**/ + +#include <boost/preprocessor/arithmetic/sub.hpp> +#include <boost/preprocessor/repetition/enum_trailing.hpp> +#include <boost/preprocessor/tuple/rem.hpp> + +#define BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC0(r, n, elem, data) \ + (( \ + BOOST_PP_TUPLE_ELEM(3, 2, data) \ + , BOOST_PP_TUPLE_REM(BOOST_PP_TUPLE_ELEM(3, 0, data)) elem \ + BOOST_PP_ENUM_TRAILING( \ + BOOST_PP_SUB( \ + BOOST_PP_TUPLE_ELEM(3, 1, data) \ + , BOOST_PP_TUPLE_ELEM(3, 0, data) \ + ) \ + , BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC0_DUMMY_ELEM \ + , ~ \ + ) \ + )) +/**/ + +#include <boost/parameter/aux_/preprocessor/impl/for_each.hpp> + +#define BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC_AUX( \ + r, arity, max_arity, spec, xform \ +) \ + BOOST_PARAMETER_AUX_PP_FOR_EACH_R( \ + r \ + , arity \ + , BOOST_PARAMETER_AUX_PP_FLATTEN_ARGS(spec) \ + , ( \ + arity \ + , max_arity \ + , xform(BOOST_PARAMETER_AUX_PP_FLATTEN_QUALIFIER(spec)) \ + ) \ + , BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC0 \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC_optional(r, arities, spec) \ + BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC_AUX( \ + r \ + , BOOST_PP_CAT( \ + BOOST_PARAMETER_AUX_PP_FLATTEN_ARITY_ \ + , BOOST_PARAMETER_AUX_PP_FLATTEN_QUALIFIER(spec) \ + )(arities) \ + , BOOST_PP_TUPLE_ELEM(3, 2, arities) \ + , spec \ + , BOOST_PARAMETER_AUX_PP_FLATTEN_IDENTITY \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC_required(r, arities, spec) \ + BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC_optional(r, arities, spec) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC_deduced_M(r, arities, n, spec) \ + BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC_AUX( \ + r \ + , BOOST_PP_CAT( \ + BOOST_PARAMETER_AUX_PP_FLATTEN_ARITY_ \ + , BOOST_PARAMETER_AUX_PP_FLATTEN_QUALIFIER(spec) \ + )(arities) \ + , BOOST_PP_TUPLE_ELEM(3, 2, arities) \ + , spec \ + , BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC_AS_DEDUCED \ + ) +/**/ + +#include <boost/preprocessor/seq/for_each_i.hpp> + +#define BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC_deduced(r, arities, spec) \ + BOOST_PP_SEQ_FOR_EACH_I_R( \ + r \ + , BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC_deduced_M \ + , arities \ + , BOOST_PARAMETER_AUX_PP_FLATTEN_ARGS(spec) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC(r, arities, spec) \ + BOOST_PP_CAT( \ + BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC_ \ + , BOOST_PARAMETER_AUX_PP_FLATTEN_QUALIFIER(spec) \ + )(r, arities, spec) +/**/ + +#include <boost/preprocessor/seq/for_each.hpp> + +#define BOOST_PARAMETER_AUX_PP_FLATTEN( \ + opt_arity, req_arity, wanted_arity, specs \ +) \ + BOOST_PP_SEQ_FOR_EACH( \ + BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC \ + , (opt_arity, req_arity, wanted_arity) \ + , specs \ + ) +/**/ + +#endif // include guard + diff --git a/boost/parameter/aux_/preprocessor/impl/for_each.hpp b/boost/parameter/aux_/preprocessor/impl/for_each.hpp new file mode 100644 index 0000000000..b6ece207f2 --- /dev/null +++ b/boost/parameter/aux_/preprocessor/impl/for_each.hpp @@ -0,0 +1,152 @@ +// Copyright Daniel Wallin 2005. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_FOR_EACH_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_FOR_EACH_HPP + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_head_aux2(x, y) (x, y), ~ +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_head_aux3(x, y, z) (x, y, z), ~ +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_head_aux4(x, y, z, u) (x, y, z, u), ~ + +#define \ +BOOST_PARAMETER_AUX_PP_FOR_EACH_pred_aux_BOOST_PARAMETER_AUX_PP_FOR_EACH_END_S +/**/ + +#include <boost/preprocessor/detail/split.hpp> + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_pred_SPLIT_FIRST(x) \ + BOOST_PP_SPLIT(0, x) +/**/ + +#include <boost/preprocessor/cat.hpp> + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_head(n, x) \ + BOOST_PP_SPLIT( \ + 0 \ + , BOOST_PP_CAT(BOOST_PARAMETER_AUX_PP_FOR_EACH_head_aux, n) x \ + ) +/**/ + +#include <boost/preprocessor/facilities/is_empty.hpp> +#include <boost/preprocessor/logical/not.hpp> + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_pred_aux_check(x) \ + BOOST_PP_NOT(BOOST_PP_IS_EMPTY( \ + BOOST_PP_CAT(BOOST_PARAMETER_AUX_PP_FOR_EACH_pred_aux_, x) \ + )), ~ +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_pred_aux2(x, y) \ + BOOST_PARAMETER_AUX_PP_FOR_EACH_pred_aux_check(x) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_pred_aux3(x, y, z) \ + BOOST_PARAMETER_AUX_PP_FOR_EACH_pred_aux_check(x) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_pred_aux4(x, y, z, u) \ + BOOST_PARAMETER_AUX_PP_FOR_EACH_pred_aux_check(x) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_pred_aux0(n, x) \ + BOOST_PP_CAT(BOOST_PARAMETER_AUX_PP_FOR_EACH_pred_aux, n) x +/**/ + +#include <boost/preprocessor/tuple/elem.hpp> + +#if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_pred(r, state) \ + BOOST_PARAMETER_AUX_PP_FOR_EACH_pred_SPLIT_FIRST( \ + BOOST_PARAMETER_AUX_PP_FOR_EACH_pred_aux0( \ + BOOST_PP_TUPLE_ELEM(5, 3, state) \ + , BOOST_PP_TUPLE_ELEM(5, 0, state) \ + ) \ + ) +/**/ + +#else // !(BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()) + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_pred(r, state) \ + BOOST_PP_SPLIT( \ + 0 \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_pred_aux0( \ + BOOST_PP_TUPLE_ELEM(5, 3, state) \ + , BOOST_PP_TUPLE_ELEM(5, 0, state) \ + ) \ + ) +/**/ + +#endif // BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() + +#include <boost/preprocessor/arithmetic/inc.hpp> +#include <boost/preprocessor/tuple/eat.hpp> + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_op(r, state) \ + ( \ + BOOST_PP_TUPLE_EAT(BOOST_PP_TUPLE_ELEM(5, 3, state)) \ + BOOST_PP_TUPLE_ELEM(5, 0, state) \ + , BOOST_PP_TUPLE_ELEM(5, 1, state) \ + , BOOST_PP_TUPLE_ELEM(5, 2, state) \ + , BOOST_PP_TUPLE_ELEM(5, 3, state) \ + , BOOST_PP_INC(BOOST_PP_TUPLE_ELEM(5, 4, state)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_macro(r, state) \ + BOOST_PP_TUPLE_ELEM(5, 2, state)( \ + r \ + , BOOST_PP_TUPLE_ELEM(5, 4, state) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_head( \ + BOOST_PP_TUPLE_ELEM(5, 3, state) \ + , BOOST_PP_TUPLE_ELEM(5, 0, state) \ + ) \ + , BOOST_PP_TUPLE_ELEM(5, 1, state) \ + ) +/**/ + +#include <boost/preprocessor/punctuation/comma_if.hpp> + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_build_end_sentinel(z, n, text) \ + BOOST_PP_COMMA_IF(n) BOOST_PARAMETER_AUX_PP_FOR_EACH_END_S +/**/ + +#include <boost/preprocessor/repetition/repeat.hpp> + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_build_end_sentinel_tuple(arity) \ + ( \ + BOOST_PP_REPEAT( \ + arity, BOOST_PARAMETER_AUX_PP_FOR_EACH_build_end_sentinel, _ \ + ) \ + ) +/**/ + +#include <boost/preprocessor/repetition/for.hpp> + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_R(r, arity, list, data, macro) \ + BOOST_PP_CAT(BOOST_PP_FOR_, r)( \ + (list \ + BOOST_PARAMETER_AUX_PP_FOR_EACH_build_end_sentinel_tuple(arity) \ + , data \ + , macro \ + , arity \ + , 0 \ + ) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_pred \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_op \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_macro \ + ) +/**/ + +#include <boost/preprocessor/repetition/deduce_r.hpp> + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH(arity, list, data, macro) \ + BOOST_PARAMETER_AUX_PP_FOR_EACH_R( \ + BOOST_PP_DEDUCE_R(), arity, list, data, macro \ + ) +/**/ + +#endif // include guard + diff --git a/boost/parameter/aux_/preprocessor/impl/forwarding_overloads.hpp b/boost/parameter/aux_/preprocessor/impl/forwarding_overloads.hpp new file mode 100644 index 0000000000..f5eb7ab797 --- /dev/null +++ b/boost/parameter/aux_/preprocessor/impl/forwarding_overloads.hpp @@ -0,0 +1,509 @@ +// Copyright Daniel Wallin 2006. +// Copyright Cromwell D. Enage 2017. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_FORWARDING_OVERLOADS_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_FORWARDING_OVERLOADS_HPP + +#include <boost/parameter/config.hpp> + +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + +#include <boost/preprocessor/cat.hpp> + +// Expands to a forwarding parameter for a constructor or forwarding function. +#define BOOST_PARAMETER_FUNCTION_ARG_TYPE_Z(z, n, type_prefix) \ + BOOST_PP_CAT(type_prefix, n)&& +/**/ + +#include <utility> + +// Expands to an argument passed from a forwarding function to the front-end +// implementation function, or from a constructor to its delegate. +#define BOOST_PARAMETER_FUNCTION_FORWARD_PARAM_Z(z, n, type_prefix) \ + ::std::forward<BOOST_PP_CAT(type_prefix, n)>(BOOST_PP_CAT(a, n)) +/**/ + +#include <boost/parameter/aux_/preprocessor/impl/parenthesized_type.hpp> +#include <boost/preprocessor/tuple/elem.hpp> + +// Expands to the default constructor, whose job is to pass an empty back to +// the delegate constructor of the base class. +#define BOOST_PARAMETER_CONSTRUCTOR_OVERLOAD_0_Z(z, n, data) \ + inline BOOST_PP_TUPLE_ELEM(2, 0, data)() \ + : BOOST_PARAMETER_PARENTHESIZED_TYPE(BOOST_PP_TUPLE_ELEM(2, 1, data))( \ + BOOST_PP_CAT(constructor_parameters, __LINE__)()() \ + ) \ + { \ + } +/**/ + +#include <boost/parameter/aux_/pp_impl/argument_pack.hpp> +#include <boost/parameter/aux_/preprocessor/impl/function_name.hpp> +#include <boost/preprocessor/control/expr_if.hpp> + +// Expands to a 0-arity forwarding function, whose job is to pass an empty +// pack to the front-end implementation function. +#define BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOAD_0_Z(z, n, data) \ + BOOST_PARAMETER_MEMBER_FUNCTION_STATIC(BOOST_PP_TUPLE_ELEM(4, 1, data)) \ + inline BOOST_PARAMETER_FUNCTION_RESULT_NAME( \ + BOOST_PP_TUPLE_ELEM(4, 1, data) \ + , BOOST_PP_TUPLE_ELEM(4, 3, data) \ + )< \ + ::boost::parameter::aux::argument_pack< \ + BOOST_PARAMETER_FUNCTION_SPECIFICATION_NAME( \ + BOOST_PP_TUPLE_ELEM(4, 1, data) \ + , BOOST_PP_TUPLE_ELEM(4, 3, data) \ + ) \ + >::type \ + >::type \ + BOOST_PARAMETER_MEMBER_FUNCTION_NAME(BOOST_PP_TUPLE_ELEM(3, 0, data))() \ + BOOST_PP_EXPR_IF(BOOST_PP_TUPLE_ELEM(4, 3, data), const) \ + { \ + return BOOST_PP_EXPR_IF(BOOST_PP_TUPLE_ELEM(4, 2, data), this->) \ + BOOST_PARAMETER_FUNCTION_IMPL_NAME( \ + BOOST_PP_TUPLE_ELEM(4, 1, data) \ + , BOOST_PP_TUPLE_ELEM(4, 3, data) \ + )( \ + BOOST_PARAMETER_FUNCTION_SPECIFICATION_NAME( \ + BOOST_PP_TUPLE_ELEM(4, 1, data) \ + , BOOST_PP_TUPLE_ELEM(4, 3, data) \ + )()() \ + ); \ + } +/**/ + +#include <boost/parameter/aux_/preprocessor/impl/function_forward_match.hpp> +#include <boost/preprocessor/repetition/enum.hpp> +#include <boost/preprocessor/repetition/enum_params.hpp> +#include <boost/preprocessor/repetition/enum_binary_params.hpp> + +// Expands to a forwarding function, whose job is to consolidate its arguments +// into a pack for the front-end implementation function to take in. +#define BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOAD_1_Z(z, n, data) \ + template <BOOST_PP_ENUM_PARAMS_Z(z, n, typename ParameterArgumentType)> \ + BOOST_PARAMETER_MEMBER_FUNCTION_STATIC(BOOST_PP_TUPLE_ELEM(4, 1, data)) \ + inline typename BOOST_PARAMETER_FUNCTION_RESULT_NAME( \ + BOOST_PP_TUPLE_ELEM(4, 1, data) \ + , BOOST_PP_TUPLE_ELEM(4, 3, data) \ + )< \ + typename ::boost::parameter::aux::argument_pack< \ + BOOST_PARAMETER_FUNCTION_SPECIFICATION_NAME( \ + BOOST_PP_TUPLE_ELEM(4, 1, data) \ + , BOOST_PP_TUPLE_ELEM(4, 3, data) \ + ) \ + , BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \ + n \ + , BOOST_PARAMETER_FUNCTION_ARG_TYPE_Z \ + , ParameterArgumentType \ + ) \ + >::type \ + >::type \ + BOOST_PARAMETER_MEMBER_FUNCTION_NAME(BOOST_PP_TUPLE_ELEM(4, 0, data))( \ + BOOST_PP_ENUM_BINARY_PARAMS_Z(z, n, ParameterArgumentType, && a) \ + BOOST_PARAMETER_FUNCTION_FORWARD_MATCH_Z( \ + z \ + , BOOST_PARAMETER_FUNCTION_SPECIFICATION_NAME( \ + BOOST_PP_TUPLE_ELEM(4, 1, data) \ + , BOOST_PP_TUPLE_ELEM(4, 3, data) \ + ) \ + , n \ + , ParameterArgumentType \ + ) \ + ) BOOST_PP_EXPR_IF(BOOST_PP_TUPLE_ELEM(4, 3, data), const) \ + { \ + return BOOST_PP_EXPR_IF(BOOST_PP_TUPLE_ELEM(4, 2, data), this->) \ + BOOST_PARAMETER_FUNCTION_IMPL_NAME( \ + BOOST_PP_TUPLE_ELEM(4, 1, data) \ + , BOOST_PP_TUPLE_ELEM(4, 3, data) \ + )( \ + BOOST_PARAMETER_FUNCTION_SPECIFICATION_NAME( \ + BOOST_PP_TUPLE_ELEM(4, 1, data) \ + , BOOST_PP_TUPLE_ELEM(4, 3, data) \ + )()( \ + BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \ + n \ + , BOOST_PARAMETER_FUNCTION_FORWARD_PARAM_Z \ + , ParameterArgumentType \ + ) \ + ) \ + ); \ + } +/**/ + +#include <boost/preprocessor/comparison/equal.hpp> + +// Expands to a constructor whose job is to consolidate its arguments into a +// pack for the delegate constructor of the base class to take in. +#define BOOST_PARAMETER_CONSTRUCTOR_OVERLOAD_1_Z(z, n, data) \ + template <BOOST_PP_ENUM_PARAMS_Z(z, n, typename ParameterArgumentType)> \ + BOOST_PP_EXPR_IF(BOOST_PP_EQUAL(n, 1), explicit) \ + inline BOOST_PP_TUPLE_ELEM(2, 0, data)( \ + BOOST_PP_ENUM_BINARY_PARAMS_Z(z, n, ParameterArgumentType, && a) \ + BOOST_PARAMETER_FUNCTION_FORWARD_MATCH_Z( \ + z \ + , BOOST_PP_CAT(constructor_parameters, __LINE__) \ + , n \ + , ParameterArgumentType \ + ) \ + ) : BOOST_PARAMETER_PARENTHESIZED_TYPE(BOOST_PP_TUPLE_ELEM(2, 1, data))( \ + BOOST_PP_CAT(constructor_parameters, __LINE__)()( \ + BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \ + n \ + , BOOST_PARAMETER_FUNCTION_FORWARD_PARAM_Z \ + , ParameterArgumentType \ + ) \ + ) \ + ) \ + { \ + } +/**/ + +#include <boost/preprocessor/control/if.hpp> + +#define BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOAD_Z(z, n, data) \ + BOOST_PP_IF( \ + n \ + , BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOAD_1_Z \ + , BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOAD_0_Z \ + )(z, n, data) +/**/ + +#define BOOST_PARAMETER_CONSTRUCTOR_OVERLOAD_Z(z, n, data) \ + BOOST_PP_IF( \ + n \ + , BOOST_PARAMETER_CONSTRUCTOR_OVERLOAD_1_Z \ + , BOOST_PARAMETER_CONSTRUCTOR_OVERLOAD_0_Z \ + )(z, n, data) +/**/ + +#include <boost/preprocessor/repetition/repeat_from_to.hpp> + +// Helper macro for BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOADS. +#define BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOADS_AUX(nm, impl, r, is_m, c) \ + BOOST_PP_REPEAT_FROM_TO( \ + BOOST_PP_TUPLE_ELEM(2, 0, r) \ + , BOOST_PP_TUPLE_ELEM(2, 1, r) \ + , BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOAD_Z \ + , ( \ + nm \ + , impl \ + , BOOST_PP_IF( \ + BOOST_PARAMETER_MEMBER_FUNCTION_IS_STATIC(nm) \ + , 0 \ + , is_m \ + ) \ + , c \ + ) \ + ) +/**/ + +// Helper macro for BOOST_PARAMETER_CONSTRUCTOR_OVERLOADS. +#define BOOST_PARAMETER_CONSTRUCTOR_OVERLOADS_AUX(class_, base, range) \ + BOOST_PP_REPEAT_FROM_TO( \ + BOOST_PP_TUPLE_ELEM(2, 0, range) \ + , BOOST_PP_TUPLE_ELEM(2, 1, range) \ + , BOOST_PARAMETER_CONSTRUCTOR_OVERLOAD_Z \ + , (class_, base) \ + ) +/**/ + +#include <boost/parameter/aux_/preprocessor/impl/arity_range.hpp> + +// Expands to the layer of forwarding functions for the function with the +// specified name, whose arguments determine the range of arities. +#define BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOADS(name, impl, a, is_m, c) \ + BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOADS_AUX( \ + name, impl, BOOST_PARAMETER_ARITY_RANGE(a), is_m, c \ + ) +/**/ + +// Expands to the layer of forwarding functions for the constructor in the +// specified class, whose arguments determine the range of arities. +#define BOOST_PARAMETER_CONSTRUCTOR_OVERLOADS(class_, base, args) \ + BOOST_PARAMETER_CONSTRUCTOR_OVERLOADS_AUX( \ + class_, base, BOOST_PARAMETER_ARITY_RANGE(args) \ + ) +/**/ + +#else // !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + +#include <boost/parameter/aux_/preprocessor/impl/parenthesized_type.hpp> +#include <boost/preprocessor/seq/seq.hpp> +#include <boost/preprocessor/tuple/elem.hpp> +#include <boost/preprocessor/cat.hpp> + +// Expands to the default constructor, whose job is to pass an empty argument +// pack back to the delegate constructor of the base class. +#define BOOST_PARAMETER_DEFAULT_CONSTRUCTOR(z, n, seq) \ + inline \ + BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_TAIL(seq)))() \ + : BOOST_PARAMETER_PARENTHESIZED_TYPE( \ + BOOST_PP_TUPLE_ELEM( \ + 2, 1, BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_TAIL(seq)) \ + ) \ + )(BOOST_PP_CAT(constructor_parameters, __LINE__)()()) \ + { \ + } +/**/ + +#include <boost/parameter/aux_/pp_impl/argument_pack.hpp> +#include <boost/parameter/aux_/preprocessor/impl/function_name.hpp> +#include <boost/preprocessor/control/expr_if.hpp> + +// Expands to a 0-arity forwarding function, whose job is to pass an empty +// argument pack to the front-end implementation function. +#define BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOAD_0_ARITY(z, n, seq) \ + BOOST_PARAMETER_MEMBER_FUNCTION_STATIC( \ + BOOST_PP_TUPLE_ELEM( \ + 4, 1, BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_TAIL(seq)) \ + ) \ + ) \ + inline BOOST_PARAMETER_FUNCTION_RESULT_NAME( \ + BOOST_PP_TUPLE_ELEM( \ + 4, 1, BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_TAIL(seq)) \ + ) \ + , BOOST_PP_TUPLE_ELEM( \ + 4, 3, BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_TAIL(seq)) \ + ) \ + )< \ + ::boost::parameter::aux::argument_pack< \ + BOOST_PARAMETER_FUNCTION_SPECIFICATION_NAME( \ + BOOST_PP_TUPLE_ELEM( \ + 4, 1, BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_TAIL(seq)) \ + ) \ + , BOOST_PP_TUPLE_ELEM( \ + 4, 3, BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_TAIL(seq)) \ + ) \ + ) \ + >::type \ + >::type \ + BOOST_PARAMETER_MEMBER_FUNCTION_NAME( \ + BOOST_PP_TUPLE_ELEM( \ + 4, 0, BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_TAIL(seq)) \ + ) \ + )() BOOST_PP_EXPR_IF( \ + BOOST_PP_TUPLE_ELEM( \ + 4, 3, BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_TAIL(seq)) \ + ) \ + , const \ + ) \ + { \ + return BOOST_PP_EXPR_IF( \ + BOOST_PP_TUPLE_ELEM( \ + 4, 2, BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_TAIL(seq)) \ + ) \ + , this-> \ + ) BOOST_PARAMETER_FUNCTION_IMPL_NAME( \ + BOOST_PP_TUPLE_ELEM( \ + 4, 1, BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_TAIL(seq)) \ + ) \ + , BOOST_PP_TUPLE_ELEM( \ + 4, 3, BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_TAIL(seq)) \ + ) \ + )( \ + BOOST_PARAMETER_FUNCTION_SPECIFICATION_NAME( \ + BOOST_PP_TUPLE_ELEM( \ + 4, 1, BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_TAIL(seq)) \ + ) \ + , BOOST_PP_TUPLE_ELEM( \ + 4, 3, BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_TAIL(seq)) \ + ) \ + )()() \ + ); \ + } +/**/ + +#include <boost/parameter/aux_/preprocessor/binary_seq_to_args.hpp> +#include <boost/parameter/aux_/preprocessor/impl/function_forward_match.hpp> +#include <boost/preprocessor/comparison/equal.hpp> +#include <boost/preprocessor/repetition/enum_params.hpp> +#include <boost/preprocessor/seq/size.hpp> + +// Expands to a constructor whose job is to consolidate its arguments into a +// pack for the delegate constructor of the base class to take in. Each +// element in BOOST_PP_SEQ_TAIL(seq) determines the const-ness of the +// corresponding argument. +#define BOOST_PARAMETER_CONSTRUCTOR_OVERLOAD_R(r, seq) \ + template < \ + BOOST_PP_ENUM_PARAMS( \ + BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_TAIL(seq)) \ + , typename ParameterArgumentType \ + ) \ + > \ + BOOST_PP_EXPR_IF( \ + BOOST_PP_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_TAIL(seq)), 1) \ + , explicit \ + ) \ + inline BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_SEQ_HEAD(seq))( \ + BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARGS( \ + BOOST_PP_SEQ_TAIL(seq), (ParameterArgumentType)(a) \ + ) \ + BOOST_PARAMETER_FUNCTION_FORWARD_MATCH( \ + BOOST_PP_CAT(constructor_parameters, __LINE__) \ + , BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_TAIL(seq)) \ + , ParameterArgumentType \ + ) \ + ) : BOOST_PARAMETER_PARENTHESIZED_TYPE( \ + BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_SEQ_HEAD(seq)) \ + )( \ + BOOST_PP_CAT(constructor_parameters, __LINE__)()( \ + BOOST_PP_ENUM_PARAMS( \ + BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_TAIL(seq)), a \ + ) \ + ) \ + ) \ + { \ + } +/**/ + +// Expands to a forwarding function, whose job is to consolidate its arguments +// into a pack for the front-end implementation function to take in. Each +// element in BOOST_PP_SEQ_TAIL(seq) determines the const-ness of the +// corresponding argument. +#define BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOAD_R(r, seq) \ + template < \ + BOOST_PP_ENUM_PARAMS( \ + BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_TAIL(seq)) \ + , typename ParameterArgumentType \ + ) \ + > \ + BOOST_PARAMETER_MEMBER_FUNCTION_STATIC( \ + BOOST_PP_TUPLE_ELEM(4, 1, BOOST_PP_SEQ_HEAD(seq)) \ + ) \ + inline typename BOOST_PARAMETER_FUNCTION_RESULT_NAME( \ + BOOST_PP_TUPLE_ELEM(4, 1, BOOST_PP_SEQ_HEAD(seq)) \ + , BOOST_PP_TUPLE_ELEM(4, 3, BOOST_PP_SEQ_HEAD(seq)) \ + )< \ + typename ::boost::parameter::aux::argument_pack< \ + BOOST_PARAMETER_FUNCTION_SPECIFICATION_NAME( \ + BOOST_PP_TUPLE_ELEM(4, 1, BOOST_PP_SEQ_HEAD(seq)) \ + , BOOST_PP_TUPLE_ELEM(4, 3, BOOST_PP_SEQ_HEAD(seq)) \ + ) \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARGS( \ + BOOST_PP_SEQ_TAIL(seq), (ParameterArgumentType) \ + ) \ + >::type \ + >::type \ + BOOST_PARAMETER_MEMBER_FUNCTION_NAME( \ + BOOST_PP_TUPLE_ELEM(4, 0, BOOST_PP_SEQ_HEAD(seq)) \ + )( \ + BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARGS( \ + BOOST_PP_SEQ_TAIL(seq), (ParameterArgumentType)(a) \ + ) \ + BOOST_PARAMETER_FUNCTION_FORWARD_MATCH( \ + BOOST_PARAMETER_FUNCTION_SPECIFICATION_NAME( \ + BOOST_PP_TUPLE_ELEM(4, 1, BOOST_PP_SEQ_HEAD(seq)) \ + , BOOST_PP_TUPLE_ELEM(4, 3, BOOST_PP_SEQ_HEAD(seq)) \ + ) \ + , BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_TAIL(seq)) \ + , ParameterArgumentType \ + ) \ + ) BOOST_PP_EXPR_IF( \ + BOOST_PP_TUPLE_ELEM(4, 3, BOOST_PP_SEQ_HEAD(seq)), const \ + ) \ + { \ + return BOOST_PP_EXPR_IF( \ + BOOST_PP_TUPLE_ELEM(4, 2, BOOST_PP_SEQ_HEAD(seq)) \ + , this-> \ + ) BOOST_PARAMETER_FUNCTION_IMPL_NAME( \ + BOOST_PP_TUPLE_ELEM(4, 1, BOOST_PP_SEQ_HEAD(seq)) \ + , BOOST_PP_TUPLE_ELEM(4, 3, BOOST_PP_SEQ_HEAD(seq)) \ + )( \ + BOOST_PARAMETER_FUNCTION_SPECIFICATION_NAME( \ + BOOST_PP_TUPLE_ELEM(4, 1, BOOST_PP_SEQ_HEAD(seq)) \ + , BOOST_PP_TUPLE_ELEM(4, 3, BOOST_PP_SEQ_HEAD(seq)) \ + )()( \ + BOOST_PP_ENUM_PARAMS( \ + BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_TAIL(seq)), a \ + ) \ + ) \ + ); \ + } +/**/ + +#include <boost/parameter/aux_/preprocessor/binary_seq_for_each.hpp> +#include <boost/preprocessor/control/if.hpp> + +// Expands to all constructors that take in n arguments. Enables +// BOOST_PARAMETER_CONSTRUCTOR_OVERLOADS_AUX to use +// BOOST_PARAMETER_CONSTRUCTOR_OVERLOAD_Z within BOOST_PP_REPEAT_FROM_TO. +#define BOOST_PARAMETER_CONSTRUCTOR_OVERLOAD_Z(z, n, data) \ + BOOST_PP_IF( \ + n \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_Z \ + , BOOST_PARAMETER_DEFAULT_CONSTRUCTOR \ + )(z, n, (BOOST_PARAMETER_CONSTRUCTOR_OVERLOAD_R)(data)) +/**/ + +// Expands to all forwarding functions that take in n arguments. Enables +// BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOADS_AUX to use +// BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOAD_Z within BOOST_PP_REPEAT_FROM_TO. +#define BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOAD_Z(z, n, data) \ + BOOST_PP_IF( \ + n \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_Z \ + , BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOAD_0_ARITY \ + )(z, n, (BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOAD_R)(data)) +/**/ + +#include <boost/preprocessor/repetition/repeat_from_to.hpp> + +// Helper macro for BOOST_PARAMETER_CONSTRUCTOR_OVERLOADS. +#define BOOST_PARAMETER_CONSTRUCTOR_OVERLOADS_AUX(class_, base, range) \ + BOOST_PP_REPEAT_FROM_TO( \ + BOOST_PP_TUPLE_ELEM(2, 0, range) \ + , BOOST_PP_TUPLE_ELEM(2, 1, range) \ + , BOOST_PARAMETER_CONSTRUCTOR_OVERLOAD_Z \ + , (class_, base) \ + ) +/**/ + +// Helper macro for BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOADS. +#define BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOADS_AUX(nm, impl, r, is_m, c) \ + BOOST_PP_REPEAT_FROM_TO( \ + BOOST_PP_TUPLE_ELEM(2, 0, r) \ + , BOOST_PP_TUPLE_ELEM(2, 1, r) \ + , BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOAD_Z \ + , ( \ + nm \ + , impl \ + , BOOST_PP_IF( \ + BOOST_PARAMETER_MEMBER_FUNCTION_IS_STATIC(impl) \ + , 0 \ + , is_m \ + ) \ + , c \ + ) \ + ) +/**/ + +#include <boost/parameter/aux_/preprocessor/impl/arity_range.hpp> + +// Expands to the layer of forwarding functions for the constructor in the +// specified class, whose arguments determine the range of arities. +#define BOOST_PARAMETER_CONSTRUCTOR_OVERLOADS(class_, base, args) \ + BOOST_PARAMETER_CONSTRUCTOR_OVERLOADS_AUX( \ + class_ \ + , base \ + , BOOST_PARAMETER_ARITY_RANGE(args) \ + ) +/**/ + +// Expands to the layer of forwarding functions for the function with the +// specified name, whose arguments determine the range of arities. +#define BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOADS(name, impl, a, is_m, c) \ + BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOADS_AUX( \ + name \ + , impl \ + , BOOST_PARAMETER_ARITY_RANGE(a) \ + , is_m \ + , c \ + ) +/**/ + +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING +#endif // include guard + diff --git a/boost/parameter/aux_/preprocessor/impl/function_cast.hpp b/boost/parameter/aux_/preprocessor/impl/function_cast.hpp new file mode 100644 index 0000000000..2c40a25798 --- /dev/null +++ b/boost/parameter/aux_/preprocessor/impl/function_cast.hpp @@ -0,0 +1,730 @@ +// Copyright Daniel Wallin 2006. +// Copyright Cromwell D. Enage 2017. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_FUNCTION_CAST_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_FUNCTION_CAST_HPP + +#include <boost/parameter/config.hpp> + +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + +namespace boost { namespace parameter { namespace aux { + + // Handles possible implicit casts. Used by preprocessor.hpp + // to normalize user input. + // + // cast<void*>::execute() is identity + // cast<void*(X)>::execute() is identity + // cast<void(X)>::execute() casts to X + // + // preprocessor.hpp uses this like this: + // + // #define X(value, predicate) + // cast<void predicate>::execute(value) + // + // X(something, *) + // X(something, *(predicate)) + // X(something, (int)) + template <typename VoidExpr, typename Args> + struct cast; +}}} // namespace boost::parameter::aux + +#include <boost/parameter/aux_/use_default_tag.hpp> + +namespace boost { namespace parameter { namespace aux { + + template <typename T, typename B> + inline ::boost::parameter::aux::use_default_tag + forward(::boost::parameter::aux::use_default_tag) + { + return ::boost::parameter::aux::use_default_tag(); + } +}}} // namespace boost::parameter::aux + +#include <boost/mpl/bool.hpp> +#include <boost/mpl/if.hpp> + +#if defined(BOOST_PARAMETER_CAN_USE_MP11) +#include <boost/mp11/integral.hpp> +#include <boost/mp11/utility.hpp> +#endif + +namespace boost { namespace parameter { namespace aux { + + template <typename Args> + struct cast<void*,Args> + { + template <typename T, typename B> + struct apply + { + typedef typename ::boost::mpl + ::if_<B,T,::boost::mpl::true_>::type type; + }; + +#if defined(BOOST_PARAMETER_CAN_USE_MP11) + template <typename T, typename B> + using fn = ::boost::mp11::mp_if<B,T,::boost::mp11::mp_true>; +#endif + }; +}}} // namespace boost::parameter::aux + +#include <boost/parameter/aux_/void.hpp> + +namespace boost { namespace parameter { namespace aux { + + template <typename Predicate, typename Args> + struct cast<void*(Predicate),Args> + : ::boost::parameter::aux::cast<void*,Args> + { + }; +}}} // namespace boost::parameter::aux + +#include <boost/mpl/placeholders.hpp> + +namespace boost { namespace parameter { namespace aux { + + // This is a hack used in cast<> to turn the user supplied type, + // which may or may not be a placeholder expression, into one, + // so that it will be properly evaluated by mpl::apply. + template <typename T, typename Dummy = ::boost::mpl::_1> + struct as_placeholder_expr + { + typedef T type; + }; +}}} // namespace boost::parameter::aux + +#if defined(BOOST_PARAMETER_CAN_USE_MP11) +#include <boost/mp11/list.hpp> + +namespace boost { namespace parameter { namespace aux { + + template <typename Target, typename Source, typename Args> + struct apply_target_fn + { + using type = ::boost::mp11 + ::mp_apply_q<Target,::boost::mp11::mp_list<Source,Args> >; + }; +}}} // namespace boost::parameter::aux + +#endif + +#include <boost/mpl/apply.hpp> + +#if defined(BOOST_PARAMETER_CAN_USE_MP11) +#include <boost/parameter/aux_/has_nested_template_fn.hpp> +#include <type_traits> +#else +#include <boost/type_traits/is_same.hpp> +#include <boost/type_traits/remove_const.hpp> +#include <boost/type_traits/remove_reference.hpp> +#endif + +namespace boost { namespace parameter { namespace aux { + + template <typename Target, typename Source, typename Args> +#if defined(BOOST_PARAMETER_CAN_USE_MP11) + using is_target_same_as_source = ::std::is_same< + typename ::std::remove_const< + typename ::std::remove_reference< + typename ::boost::mp11::mp_if< + ::boost::parameter::aux::has_nested_template_fn<Target> + , ::boost::parameter::aux + ::apply_target_fn<Target,Source,Args> + , ::boost::mpl::apply2< + ::boost::parameter::aux::as_placeholder_expr<Target> + , Source + , Args + > + >::type + >::type + >::type + , typename ::std::remove_const<Source>::type + >; +#else // !defined(BOOST_PARAMETER_CAN_USE_MP11) + struct is_target_same_as_source + : ::boost::mpl::if_< + ::boost::is_same< + typename ::boost::remove_const< + typename ::boost::remove_reference< + typename ::boost::mpl::apply2< + ::boost::parameter::aux + ::as_placeholder_expr<Target> + , Source + , Args + >::type + >::type + >::type + , typename ::boost::remove_const<Source>::type + > + , ::boost::mpl::true_ + , ::boost::mpl::false_ + >::type + { + }; +#endif // BOOST_PARAMETER_CAN_USE_MP11 +}}} // namespace boost::parameter::aux + +#if !defined(BOOST_PARAMETER_CAN_USE_MP11) +#include <boost/type_traits/add_const.hpp> +#include <boost/type_traits/is_const.hpp> +#endif + +namespace boost { namespace parameter { namespace aux { + + // Covers the case where is_convertible<Source,Target> but not + // is_same<Source,Target>. Use cases are covered + // by test/normalize_argument_types.cpp + template <typename Source, typename Target> + class cast_convert + { + typedef ::boost::parameter::aux::cast_convert<Source,Target> _self; + + public: +#if defined(BOOST_PARAMETER_CAN_USE_MP11) + using type = typename ::boost::mp11::mp_if< + ::std::is_const<Source> + , ::std::add_const<Target> + , ::std::remove_const<Target> + >::type; +#else + typedef typename boost::mpl::eval_if< + ::boost::is_const<Source> + , ::boost::add_const<Target> + , ::boost::remove_const<Target> + >::type type; +#endif + + private: + inline static typename _self::type +#if defined(BOOST_PARAMETER_CAN_USE_MP11) + _copy(typename ::std::remove_const<Target>::type value) +#else + _copy(typename ::boost::remove_const<Target>::type value) +#endif + { + return value; + } + + public: + inline static typename _self::type evaluate(Source&& source) + { + return _self::_copy(source); + } + }; + + template <typename Target, typename Source, typename Args> +#if defined(BOOST_PARAMETER_CAN_USE_MP11) + using cast_impl = ::std::remove_reference< + typename ::boost::mp11::mp_if< + ::boost::parameter::aux::has_nested_template_fn<Target> + , ::boost::parameter::aux + ::is_target_same_as_source<Target,Source,Args> + , ::boost::mpl::apply2< + ::boost::parameter::aux::as_placeholder_expr<Target> + , Source + , Args + > + >::type + >; +#else + struct cast_impl + : ::boost::remove_reference< + typename ::boost::mpl::apply2< + ::boost::parameter::aux::as_placeholder_expr<Target> + , Source + , Args + >::type + > + { + }; +#endif // BOOST_PARAMETER_CAN_USE_MP11 +}}} // namespace boost::parameter::aux + +#include <boost/mpl/eval_if.hpp> +#include <boost/mpl/identity.hpp> + +namespace boost { namespace parameter { namespace aux { + + template <typename Target, typename Args> + struct cast<void(Target),Args> + { + template <typename T, typename B> + struct apply + { + typedef typename ::boost::mpl::eval_if< + B + , ::boost::mpl::eval_if< + ::boost::parameter::aux + ::is_target_same_as_source<Target,T,Args> + , ::boost::mpl::identity<T> + , ::boost::parameter::aux::cast_impl<Target,T,Args> + > + , ::boost::parameter::aux + ::is_target_same_as_source<Target,T,Args> + >::type type; + }; + +#if defined(BOOST_PARAMETER_CAN_USE_MP11) + template <typename T, typename B> + using fn = typename ::boost::mp11::mp_if< + B + , ::boost::mp11::mp_if< + ::boost::parameter::aux + ::is_target_same_as_source<Target,T,Args> + , ::boost::mp11::mp_identity<T> + , ::boost::parameter::aux::cast_impl<Target,T,Args> + > + , ::boost::parameter::aux + ::is_target_same_as_source<Target,T,Args> + >::type; +#endif + }; +}}} // namespace boost::parameter::aux + +#include <boost/parameter/value_type.hpp> + +#if !defined(BOOST_PARAMETER_CAN_USE_MP11) +#include <boost/mpl/apply_wrap.hpp> +#endif + +// Expands to the target type of the argument as indicated by the predicate. +#if defined(BOOST_PARAMETER_CAN_USE_MP11) +#define BOOST_PARAMETER_FUNCTION_CAST_T(tag, predicate, args) \ + ::boost::mp11::mp_apply_q< \ + ::boost::parameter::aux::cast<void predicate, args> \ + , ::boost::mp11::mp_list< \ + typename ::boost::parameter::value_type< \ + args \ + , tag \ + , ::boost::parameter::aux::use_default_tag \ + >::type \ + , ::boost::mp11::mp_true \ + > \ + > +/**/ +#else // !defined(BOOST_PARAMETER_CAN_USE_MP11) +#define BOOST_PARAMETER_FUNCTION_CAST_T(tag, predicate, args) \ + typename ::boost::mpl::apply_wrap2< \ + ::boost::parameter::aux::cast<void predicate, args> \ + , typename ::boost::parameter::value_type< \ + args \ + , tag \ + , ::boost::parameter::aux::use_default_tag \ + >::type \ + , ::boost::mpl::true_ \ + >::type +/**/ +#endif // BOOST_PARAMETER_CAN_USE_MP11 + +// Expands to boost::mpl::true_ if and only if the argument's source and +// target types are the same. +#if defined(BOOST_PARAMETER_CAN_USE_MP11) +#define BOOST_PARAMETER_FUNCTION_CAST_B(tag, predicate, args) \ + ::boost::mp11::mp_apply_q< \ + ::boost::parameter::aux::cast<void predicate, args> \ + , ::boost::mp11::mp_list< \ + typename ::boost::parameter::value_type< \ + args \ + , tag \ + , ::boost::parameter::aux::use_default_tag \ + >::type \ + , ::boost::mp11::mp_false \ + > \ + > +/**/ +#else // !defined(BOOST_PARAMETER_CAN_USE_MP11) +#define BOOST_PARAMETER_FUNCTION_CAST_B(tag, predicate, args) \ + typename ::boost::mpl::apply_wrap2< \ + ::boost::parameter::aux::cast<void predicate, args> \ + , typename ::boost::parameter::value_type< \ + args \ + , tag \ + , ::boost::parameter::aux::use_default_tag \ + >::type \ + , ::boost::mpl::false_ \ + >::type +/**/ +#endif // BOOST_PARAMETER_CAN_USE_MP11 + +#include <boost/core/enable_if.hpp> +#include <utility> + +namespace boost { namespace parameter { namespace aux { + + // If the source and target types are not the same, + // then perform an implicit conversion. + template <typename Target, typename B, typename Source> + inline typename ::boost::lazy_disable_if< + B + , ::boost::parameter::aux::cast_convert<Source,Target> + >::type + forward(Source&& source) + { + return ::boost::parameter::aux::cast_convert<Source,Target> + ::evaluate(::std::forward<Source>(source)); + } + + // If the source and target types are the same, + // then simply forward the argument. + // However, treat rvalue references to scalars as const lvalue references. + template <typename T, typename B> + inline typename ::boost::enable_if<B,T const&>::type forward(T const& t) + { + return t; + } + + template <typename T, typename B> + inline typename ::boost::enable_if< +#if defined(BOOST_PARAMETER_CAN_USE_MP11) + ::boost::mp11::mp_if< + B + , ::boost::mp11::mp_if< + ::std::is_const<T> + , ::boost::mp11::mp_false + , ::boost::mp11::mp_true + > + , ::boost::mp11::mp_false + > +#else + typename ::boost::mpl::eval_if< + B + , ::boost::mpl::if_< + ::boost::is_const<T> + , ::boost::mpl::false_ + , ::boost::mpl::true_ + > + , ::boost::mpl::false_ + >::type +#endif // BOOST_PARAMETER_CAN_USE_MP11 + , T& + >::type + forward(T& t) + { + return t; + } +}}} // namespace boost::parameter::aux + +#include <boost/type_traits/is_scalar.hpp> + +namespace boost { namespace parameter { namespace aux { + + template <typename T, typename B> + inline typename ::boost::enable_if< +#if defined(BOOST_PARAMETER_CAN_USE_MP11) + ::boost::mp11::mp_if< + B + , ::boost::mp11::mp_if< + ::std::is_scalar<T> + , ::boost::mp11::mp_false + , ::boost::mp11::mp_true + > + , ::boost::mp11::mp_false + > +#else + typename ::boost::mpl::eval_if< + B + , ::boost::mpl::if_< + ::boost::is_scalar<T> + , ::boost::mpl::false_ + , ::boost::mpl::true_ + > + , ::boost::mpl::false_ + >::type +#endif // BOOST_PARAMETER_CAN_USE_MP11 + , T const&& + >::type + forward(T const&& t) + { + return static_cast<T const&&>(t); + } + + template <typename T, typename B> + inline typename ::boost::enable_if< +#if defined(BOOST_PARAMETER_CAN_USE_MP11) + ::boost::mp11::mp_if< + B + , ::boost::mp11::mp_if< + ::std::is_scalar<T> + , ::boost::mp11::mp_false + , ::boost::mp11::mp_true + > + , ::boost::mp11::mp_false + > +#else + typename ::boost::mpl::eval_if< + B + , ::boost::mpl::if_< + ::boost::is_scalar<T> + , ::boost::mpl::false_ + , ::boost::mpl::true_ + > + , ::boost::mpl::false_ + >::type +#endif // BOOST_PARAMETER_CAN_USE_MP11 + , T&& + >::type + forward(T&& t) + { + return ::std::forward<T>(t); + } +}}} // namespace boost::parameter::aux + +#elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +#define BOOST_PARAMETER_FUNCTION_CAST_T(value_t, predicate, args) value_t +#define BOOST_PARAMETER_FUNCTION_CAST_B(value, predicate, args) value +#else // no perfect forwarding support and no Borland workarounds needed + +namespace boost { namespace parameter { namespace aux { + + // Handles possible implicit casts. Used by preprocessor.hpp + // to normalize user input. + // + // cast<void*>::execute() is identity + // cast<void*(X)>::execute() is identity + // cast<void(X)>::execute() casts to X + // + // preprocessor.hpp uses this like this: + // + // #define X(value, predicate) + // cast<void predicate>::execute(value) + // + // X(something, *) + // X(something, *(predicate)) + // X(something, (int)) + template <typename VoidExpr, typename Args> + struct cast; +}}} // namespace boost::parameter::aux + +#include <boost/parameter/aux_/use_default_tag.hpp> +#include <boost/mpl/bool.hpp> +#include <boost/mpl/if.hpp> + +namespace boost { namespace parameter { namespace aux { + + template <typename Args> + struct cast<void*,Args> + { + template <typename T> + struct apply + { + typedef T& type; + }; + + inline static ::boost::parameter::aux::use_default_tag + execute(::boost::parameter::aux::use_default_tag) + { + return ::boost::parameter::aux::use_default_tag(); + } + + template <typename U> + inline static U& execute(U& value) + { + return value; + } + }; +}}} // namespace boost::parameter::aux + +#include <boost/parameter/aux_/void.hpp> + +namespace boost { namespace parameter { namespace aux { + + template <typename Predicate, typename Args> +#if BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x580)) + struct cast< ::boost::parameter::aux::voidstar(Predicate),Args> +#else + struct cast<void*(Predicate),Args> +#endif + : ::boost::parameter::aux::cast<void*,Args> + { + }; +}}} // namespace boost::parameter::aux + +#include <boost/mpl/placeholders.hpp> + +namespace boost { namespace parameter { namespace aux { + + // This is a hack used in cast<> to turn the user supplied type, + // which may or may not be a placeholder expression, into one, + // so that it will be properly evaluated by mpl::apply. + template <typename T, typename Dummy = ::boost::mpl::_1> + struct as_placeholder_expr + { + typedef T type; + }; +}}} // namespace boost::parameter::aux + +#include <boost/mpl/apply.hpp> +#include <boost/type_traits/is_same.hpp> +#include <boost/type_traits/remove_const.hpp> +#include <boost/type_traits/remove_reference.hpp> + +namespace boost { namespace parameter { namespace aux { + + template <typename Target, typename Source, typename Args> + struct is_target_same_as_source + : ::boost::mpl::if_< + ::boost::is_same< + typename ::boost::remove_const< + typename ::boost::remove_reference< + typename ::boost::mpl::apply2< + ::boost::parameter::aux + ::as_placeholder_expr<Target> + , Source + , Args + >::type + >::type + >::type + , typename ::boost::remove_const<Source>::type + > + , ::boost::mpl::true_ + , ::boost::mpl::false_ + >::type + { + }; + + template < + typename Target + , typename Source + , typename Args + , typename Enable = ::boost::parameter::aux + ::is_target_same_as_source<Target,Source,Args> + > + struct cast_impl + { + typedef Source& type; + + inline static Source& evaluate(Source& value) + { + return value; + } + }; +}}} // namespace boost::parameter::aux + +#include <boost/type_traits/add_const.hpp> +#include <boost/type_traits/add_lvalue_reference.hpp> + +namespace boost { namespace parameter { namespace aux { + + // Covers the case where is_convertible<Source,Target> but not + // is_same<Source,Target>. Use cases are covered + // by test/normalize_argument_types.cpp + template <typename Source, typename Target> + class cast_convert + { + typedef ::boost::parameter::aux::cast_convert<Source,Target> _self; + + public: + typedef typename ::boost::add_lvalue_reference< + typename ::boost::add_const<Target>::type + >::type type; + + private: + template <typename U> + inline static typename _self::type _mod_const(U const& u) + { + return u; + } + + inline static Target _copy(Target value) + { + return value; + } + + public: + inline static typename _self::type evaluate(Source& source) + { + return _self::_mod_const(_self::_copy(source)); + } + }; + + template <typename Target, typename Source, typename Args> + struct cast_impl<Target,Source,Args,::boost::mpl::false_> + : ::boost::parameter::aux::cast_convert< + Source, + typename ::boost::mpl::apply2< + ::boost::parameter::aux::as_placeholder_expr<Target> + , Source + , Args + >::type + > + { + }; +}}} // namespace boost::parameter::aux + +#include <boost/mpl/eval_if.hpp> + +namespace boost { namespace parameter { namespace aux { + + template <typename Target, typename Args> + struct cast<void(Target),Args> + { + template <typename T> + struct apply + { + typedef typename ::boost::mpl::eval_if< + ::boost::parameter::aux + ::is_target_same_as_source<Target,T,Args> + , ::boost::add_lvalue_reference<T> + , ::boost::parameter::aux::cast_impl< + Target + , T + , Args + , ::boost::mpl::false_ + > + >::type type; + }; + + inline static ::boost::parameter::aux::use_default_tag + execute(::boost::parameter::aux::use_default_tag) + { + return ::boost::parameter::aux::use_default_tag(); + } + + template <typename U> + inline static typename ::boost::parameter::aux + ::cast_impl<Target,U const,Args>::type + execute(U const& value) + { + return ::boost::parameter::aux + ::cast_impl<Target,U const,Args>::evaluate(value); + } + + template <typename U> + inline static typename ::boost::parameter::aux + ::cast_impl<Target,U,Args>::type + execute(U& value) + { + return ::boost::parameter::aux + ::cast_impl<Target,U,Args>::evaluate(value); + } + }; +}}} // namespace boost::parameter::aux + +#include <boost/mpl/apply_wrap.hpp> +#include <boost/parameter/value_type.hpp> + +// Expands to the reference-qualified target type of the argument +// as indicated by the predicate. +#define BOOST_PARAMETER_FUNCTION_CAST_T(tag, predicate, args) \ + typename ::boost::mpl::apply_wrap1< \ + ::boost::parameter::aux::cast<void predicate, args> \ + , typename ::boost::parameter::value_type< \ + args \ + , tag \ + , ::boost::parameter::aux::use_default_tag \ + >::type \ + >::type +/**/ + +// Expands to the converted or passed-through value +// as indicated by the predicate. +#define BOOST_PARAMETER_FUNCTION_CAST_B(value, predicate, args) \ + ::boost::parameter::aux::cast<void predicate, args>::execute(value) +/**/ + +#endif // perfect forwarding support, or Borland workarounds needed +#endif // include guard + diff --git a/boost/parameter/aux_/preprocessor/impl/function_dispatch_layer.hpp b/boost/parameter/aux_/preprocessor/impl/function_dispatch_layer.hpp new file mode 100644 index 0000000000..3c240d527c --- /dev/null +++ b/boost/parameter/aux_/preprocessor/impl/function_dispatch_layer.hpp @@ -0,0 +1,474 @@ +// Copyright Daniel Wallin 2006. +// Copyright Cromwell D. Enage 2017. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_FUNCTION_DISPATCH_LAYER_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_FUNCTION_DISPATCH_LAYER_HPP + +#include <boost/preprocessor/cat.hpp> + +// Expands to keyword_tag_type for some keyword_tag. +#define BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_TYPE(keyword_tag) \ + BOOST_PP_CAT(keyword_tag, _type) +/**/ + +// Expands to a template parameter for each dispatch function. +#define BOOST_PARAMETER_FUNCTION_DISPATCH_TEMPLATE_ARG(r, macro, arg) \ + , typename BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_TYPE(macro(arg)) +/**/ + +#include <boost/parameter/config.hpp> + +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + +// Expands to a forwarding parameter for a dispatch function. +#define BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_DEFN(r, macro, arg) \ + , BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_TYPE(macro(arg))&& macro(arg) +/**/ + +#include <utility> + +// Expands to an argument passed from one dispatch function to the next. +#define BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_FWD(r, macro, arg) \ + , ::std::forward< \ + BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_TYPE(macro(arg)) \ + >(macro(arg)) +/**/ + +#else // !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + +// Expands to a forwarding parameter for a dispatch function. The parameter +// type stores its const-ness. +#define BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_DEFN(r, macro, arg) \ + , BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_TYPE(macro(arg))& macro(arg) +/**/ + +#include <boost/parameter/aux_/as_lvalue.hpp> + +// Expands to an argument passed from one dispatch function to the next. +// Explicit forwarding takes the form of forcing the argument to be an lvalue. +#define BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_FWD(r, macro, arg) \ + , ::boost::parameter::aux::as_lvalue(macro(arg)) +/**/ + +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING + +#include <boost/parameter/aux_/preprocessor/impl/argument_specs.hpp> +#include <boost/parameter/aux_/preprocessor/impl/split_args.hpp> +#include <boost/preprocessor/seq/for_each.hpp> +#include <boost/preprocessor/seq/first_n.hpp> + +// Iterates through all required arguments and the first n optional arguments, +// passing each argument to the specified macro. +#define BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_REPEAT(macro, n, split_args) \ + BOOST_PP_SEQ_FOR_EACH( \ + macro \ + , BOOST_PARAMETER_FN_ARG_NAME \ + , BOOST_PARAMETER_SPLIT_ARG_REQ_SEQ(split_args) \ + ) \ + BOOST_PP_SEQ_FOR_EACH( \ + macro \ + , BOOST_PARAMETER_FN_ARG_NAME \ + , BOOST_PP_SEQ_FIRST_N( \ + n, BOOST_PARAMETER_SPLIT_ARG_OPT_SEQ(split_args) \ + ) \ + ) +/**/ + +#include <boost/parameter/aux_/preprocessor/impl/function_dispatch_tuple.hpp> +#include <boost/parameter/aux_/preprocessor/impl/function_name.hpp> +#include <boost/preprocessor/control/if.hpp> + +// Produces a name for the dispatch functions. +#define BOOST_PARAMETER_FUNCTION_DISPATCH_NAME(x, n) \ + BOOST_PP_CAT( \ + BOOST_PP_CAT( \ + BOOST_PP_IF( \ + BOOST_PARAMETER_FUNCTION_DISPATCH_IS_CONST(x) \ + , boost_param_dispatch_const_ \ + , boost_param_dispatch_ \ + ) \ + , BOOST_PP_CAT(BOOST_PP_CAT(n, boost_), __LINE__) \ + ) \ + , BOOST_PARAMETER_MEMBER_FUNCTION_NAME( \ + BOOST_PARAMETER_FUNCTION_DISPATCH_BASE_NAME(x) \ + ) \ + ) +/**/ + +// Expands to the template parameter list of the dispatch function with all +// required and first n optional parameters; also extracts the static keyword +// if present. +#define BOOST_PARAMETER_FUNCTION_DISPATCH_HEAD_TPL(n, x) \ + template < \ + typename ResultType, typename Args \ + BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_REPEAT( \ + BOOST_PARAMETER_FUNCTION_DISPATCH_TEMPLATE_ARG \ + , n \ + , BOOST_PARAMETER_FUNCTION_DISPATCH_SPLIT_ARGS(x) \ + ) \ + > BOOST_PARAMETER_MEMBER_FUNCTION_STATIC( \ + BOOST_PARAMETER_FUNCTION_DISPATCH_BASE_NAME(x) \ + ) +/**/ + +#include <boost/parameter/aux_/use_default_tag.hpp> +#include <boost/preprocessor/control/expr_if.hpp> +#include <boost/preprocessor/punctuation/comma_if.hpp> + +// Expands to the result type, name, parenthesized list of all required and +// n optional parameters, and const-ness of the dispatch function; the bit +// value b determines whether or not this dispatch function takes in +// boost::parameter::aux::use_default_tag as its last parameter. +#define BOOST_PARAMETER_FUNCTION_DISPATCH_HEAD_PRN(n, x, b1, b2) \ + ResultType BOOST_PARAMETER_FUNCTION_DISPATCH_NAME(x, b1)( \ + ResultType(*)(), Args const& args, long \ + BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_REPEAT( \ + BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_DEFN \ + , n \ + , BOOST_PARAMETER_FUNCTION_DISPATCH_SPLIT_ARGS(x) \ + ) \ + BOOST_PP_COMMA_IF(b2) \ + BOOST_PP_EXPR_IF(b2, ::boost::parameter::aux::use_default_tag) \ + ) BOOST_PP_EXPR_IF(BOOST_PARAMETER_FUNCTION_DISPATCH_IS_CONST(x), const) +/**/ + +// Expands to a forward declaration of the dispatch function that takes in +// all required and the first n optional parameters, but not +// boost::parameter::aux::use_default_tag. +#define BOOST_PARAMETER_FUNCTION_DISPATCH_FWD_DECL_0_Z(z, n, x) \ + BOOST_PARAMETER_FUNCTION_DISPATCH_HEAD_TPL(n, x) \ + BOOST_PARAMETER_FUNCTION_DISPATCH_HEAD_PRN(n, x, 0, 0); +/**/ + +// Expands to a forward declaration of the dispatch function that takes in +// all required parameters, the first n optional parameters, and +// boost::parameter::aux::use_default_tag. +#define BOOST_PARAMETER_FUNCTION_DISPATCH_FWD_DECL_1_Z(z, n, x) \ + BOOST_PARAMETER_FUNCTION_DISPATCH_HEAD_TPL(n, x) \ + BOOST_PARAMETER_FUNCTION_DISPATCH_HEAD_PRN(n, x, 0, 1); +/**/ + +#include <boost/preprocessor/seq/elem.hpp> + +// Expands to the default value of the (n + 1)th optional parameter. +#define BOOST_PARAMETER_FUNCTION_DISPATCH_DEFAULT_AUX(n, s_args) \ + BOOST_PARAMETER_FN_ARG_DEFAULT( \ + BOOST_PP_SEQ_ELEM(n, BOOST_PARAMETER_SPLIT_ARG_OPT_SEQ(s_args)) \ + ) +/**/ + +#include <boost/parameter/keyword.hpp> + +// Expands to the assignment portion which binds the default value to the +// (n + 1)th optional parameter before composing it with the argument-pack +// parameter passed in to the n-th dispatch function. +#define BOOST_PARAMETER_FUNCTION_DISPATCH_DEFAULT(n, s_args, tag_ns) \ + ::boost::parameter::keyword< \ + tag_ns::BOOST_PARAMETER_FN_ARG_NAME( \ + BOOST_PP_SEQ_ELEM(n, BOOST_PARAMETER_SPLIT_ARG_OPT_SEQ(s_args)) \ + ) \ + >::instance = BOOST_PARAMETER_FUNCTION_DISPATCH_DEFAULT_AUX(n, s_args) +/**/ + +#include <boost/parameter/aux_/preprocessor/impl/function_cast.hpp> + +// Takes in the arg tuple (name, pred) and the tag namespace. +// Extracts the corresponding required argument from the pack. +// This form enables BOOST_PARAMETER_FUNCTION_DISPATCH_LAYER to use it +// from within BOOST_PP_SEQ_FOR_EACH. +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) +// The boost::parameter::aux::forward wrapper is necessary to transmit the +// target type to the next dispatch function. Otherwise, the argument will +// retain its original type. -- Cromwell D. Enage +#define BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_CAST_R(r, tag_ns, arg) \ + , ::boost::parameter::aux::forward< \ + BOOST_PARAMETER_FUNCTION_CAST_T( \ + tag_ns::BOOST_PARAMETER_FN_ARG_NAME(arg) \ + , BOOST_PARAMETER_FN_ARG_PRED(arg) \ + , Args \ + ) \ + , BOOST_PARAMETER_FUNCTION_CAST_B( \ + tag_ns::BOOST_PARAMETER_FN_ARG_NAME(arg) \ + , BOOST_PARAMETER_FN_ARG_PRED(arg) \ + , Args \ + ) \ + >( \ + args[ \ + ::boost::parameter::keyword< \ + tag_ns::BOOST_PARAMETER_FN_ARG_NAME(arg) \ + >::instance \ + ] \ + ) +/**/ +#else // !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) +// The explicit type cast is necessary to transmit the target type to the next +// dispatch function. Otherwise, the argument will retain its original type. +// -- Cromwell D. Enage +#define BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_CAST_R(r, tag_ns, arg) \ + , BOOST_PARAMETER_FUNCTION_CAST_T( \ + tag_ns::BOOST_PARAMETER_FN_ARG_NAME(arg) \ + , BOOST_PARAMETER_FN_ARG_PRED(arg) \ + , Args \ + )( \ + args[ \ + ::boost::parameter::keyword< \ + tag_ns::BOOST_PARAMETER_FN_ARG_NAME(arg) \ + >::instance \ + ] \ + ) +/**/ +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING + +// Takes in the arg tuple (name, pred, default) and the tag namespace. +// Extracts the corresponding optional argument from the pack if specified, +// otherwise temporarily passes use_default_tag() to the dispatch functions. +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) +// The boost::parameter::aux::forward wrapper is necessary to transmit the +// target type to the next dispatch function. Otherwise, the argument will +// retain its original type. -- Cromwell D. Enage +#define BOOST_PARAMETER_FUNCTION_DISPATCH_OPT_ARG_CAST(arg, tag_ns) \ + ::boost::parameter::aux::forward< \ + BOOST_PARAMETER_FUNCTION_CAST_T( \ + tag_ns::BOOST_PARAMETER_FN_ARG_NAME(arg) \ + , BOOST_PARAMETER_FN_ARG_PRED(arg) \ + , Args \ + ) \ + , BOOST_PARAMETER_FUNCTION_CAST_B( \ + tag_ns::BOOST_PARAMETER_FN_ARG_NAME(arg) \ + , BOOST_PARAMETER_FN_ARG_PRED(arg) \ + , Args \ + ) \ + >( \ + args[ \ + ::boost::parameter::keyword< \ + tag_ns::BOOST_PARAMETER_FN_ARG_NAME(arg) \ + >::instance || ::boost::parameter::aux::use_default_tag() \ + ] \ + ) +/**/ +#else // !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) +#define BOOST_PARAMETER_FUNCTION_DISPATCH_OPT_ARG_CAST(arg, tag_ns) \ + BOOST_PARAMETER_FUNCTION_CAST_B( \ + args[ \ + ::boost::parameter::keyword< \ + tag_ns::BOOST_PARAMETER_FN_ARG_NAME(arg) \ + >::instance || ::boost::parameter::aux::use_default_tag() \ + ] \ + , BOOST_PARAMETER_FN_ARG_PRED(arg) \ + , Args \ + ) +/**/ +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING + +#include <boost/parameter/aux_/preprocessor/nullptr.hpp> + +// Expands to three dispatch functions that take in all required parameters +// and the first n optional parameters. The third dispatch function bears +// the same name as the first but takes in use_default_tag as the last +// parameter. The second dispatch function bears a different name from the +// other two. +// +// x is a tuple: +// +// (name, split_args, is_const, tag_namespace) +// +// Where name is the base name of the functions, and split_args is a tuple: +// +// (required_count, required_args, optional_count, required_args) +// +// The first dispatch function queries args if it has bound the (n + 1)th +// optional parameter to a user-defined argument. If so, then it forwards +// its own arguments followed by the user-defined argument to the dispatch +// function that takes in all required parameters and the first (n + 1) +// optional parameters, but not use_default_tag. Otherwise, it forwards +// its own arguments to the third dispatch function. +// +// The third dispatch function appends the default value of the (n + 1)th +// optional parameter to its copy of args. Then it forwards this copy, all +// required parameters, and the first n (not n + 1) optional parameters to +// the second dispatch function. +// +// The second dispatch function forwards its arguments, then the (n + 1)th +// optional parameter that it extracts from args, to the other-named dispatch +// function that takes in all required parameters and the first (n + 1) +// optional parameters, but not use_default_tag. +#define BOOST_PARAMETER_FUNCTION_DISPATCH_OVERLOAD_Z(z, n, x) \ + BOOST_PARAMETER_FUNCTION_DISPATCH_HEAD_TPL(n, x) \ + inline BOOST_PARAMETER_FUNCTION_DISPATCH_HEAD_PRN(n, x, 0, 0) \ + { \ + return BOOST_PP_EXPR_IF( \ + BOOST_PARAMETER_FUNCTION_DISPATCH_IS_MEMBER(x) \ + , this-> \ + ) BOOST_PARAMETER_FUNCTION_DISPATCH_NAME(x, 0)( \ + static_cast<ResultType(*)()>(BOOST_PARAMETER_AUX_PP_NULLPTR) \ + , args \ + , 0L \ + BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_REPEAT( \ + BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_FWD \ + , n \ + , BOOST_PARAMETER_FUNCTION_DISPATCH_SPLIT_ARGS(x) \ + ) \ + , BOOST_PARAMETER_FUNCTION_DISPATCH_OPT_ARG_CAST( \ + BOOST_PP_SEQ_ELEM( \ + n \ + , BOOST_PARAMETER_SPLIT_ARG_OPT_SEQ( \ + BOOST_PARAMETER_FUNCTION_DISPATCH_SPLIT_ARGS(x) \ + ) \ + ) \ + , BOOST_PARAMETER_FUNCTION_DISPATCH_TAG_NAMESPACE(x) \ + ) \ + ); \ + } \ + BOOST_PARAMETER_FUNCTION_DISPATCH_HEAD_TPL(n, x) \ + inline BOOST_PARAMETER_FUNCTION_DISPATCH_HEAD_PRN(n, x, 1, 0) \ + { \ + return BOOST_PP_EXPR_IF( \ + BOOST_PARAMETER_FUNCTION_DISPATCH_IS_MEMBER(x) \ + , this-> \ + ) BOOST_PARAMETER_FUNCTION_DISPATCH_NAME(x, 0)( \ + static_cast<ResultType(*)()>(BOOST_PARAMETER_AUX_PP_NULLPTR) \ + , args \ + , 0L \ + BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_REPEAT( \ + BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_FWD \ + , n \ + , BOOST_PARAMETER_FUNCTION_DISPATCH_SPLIT_ARGS(x) \ + ) \ + , args[ \ + ::boost::parameter::keyword< \ + BOOST_PARAMETER_FUNCTION_DISPATCH_TAG_NAMESPACE(x):: \ + BOOST_PARAMETER_FN_ARG_NAME( \ + BOOST_PP_SEQ_ELEM( \ + n \ + , BOOST_PARAMETER_SPLIT_ARG_OPT_SEQ( \ + BOOST_PARAMETER_FUNCTION_DISPATCH_SPLIT_ARGS(x) \ + ) \ + ) \ + ) \ + >::instance \ + ] \ + ); \ + } \ + BOOST_PARAMETER_FUNCTION_DISPATCH_HEAD_TPL(n, x) \ + inline BOOST_PARAMETER_FUNCTION_DISPATCH_HEAD_PRN(n, x, 0, 1) \ + { \ + return BOOST_PP_EXPR_IF( \ + BOOST_PARAMETER_FUNCTION_DISPATCH_IS_MEMBER(x) \ + , this-> \ + ) BOOST_PARAMETER_FUNCTION_DISPATCH_NAME(x, 1)( \ + static_cast<ResultType(*)()>(BOOST_PARAMETER_AUX_PP_NULLPTR) \ + , (args \ + , BOOST_PARAMETER_FUNCTION_DISPATCH_DEFAULT( \ + n \ + , BOOST_PARAMETER_FUNCTION_DISPATCH_SPLIT_ARGS(x) \ + , BOOST_PARAMETER_FUNCTION_DISPATCH_TAG_NAMESPACE(x) \ + ) \ + ) \ + , 0L \ + BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_REPEAT( \ + BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_FWD \ + , n \ + , BOOST_PARAMETER_FUNCTION_DISPATCH_SPLIT_ARGS(x) \ + ) \ + ); \ + } +/**/ + +#include <boost/preprocessor/arithmetic/inc.hpp> +#include <boost/preprocessor/control/if.hpp> +#include <boost/preprocessor/repetition/repeat_from_to.hpp> +#include <boost/preprocessor/tuple/eat.hpp> + +// x is a tuple: +// +// (base_name, split_args, is_member, is_const, tag_namespace) +// +// Generates all dispatch functions for the function named base_name. Each +// dispatch function that takes in n optional parameters passes the default +// value of the (n + 1)th optional parameter to the next dispatch function. +// The last dispatch function is the back-end implementation, so only the +// header is generated: the user is expected to supply the body. +// +// Also generates the front-end implementation function, which uses +// BOOST_PARAMETER_FUNCTION_CAST to extract each argument from the argument +// pack. +#define BOOST_PARAMETER_FUNCTION_DISPATCH_LAYER(fwd_decl, x) \ + BOOST_PP_IF(fwd_decl, BOOST_PP_REPEAT_FROM_TO, BOOST_PP_TUPLE_EAT(4))( \ + 0 \ + , BOOST_PP_INC( \ + BOOST_PARAMETER_SPLIT_ARG_OPT_COUNT( \ + BOOST_PARAMETER_FUNCTION_DISPATCH_SPLIT_ARGS(x) \ + ) \ + ) \ + , BOOST_PARAMETER_FUNCTION_DISPATCH_FWD_DECL_0_Z \ + , x \ + ) \ + BOOST_PP_IF(fwd_decl, BOOST_PP_REPEAT_FROM_TO, BOOST_PP_TUPLE_EAT(4))( \ + 0 \ + , BOOST_PARAMETER_SPLIT_ARG_OPT_COUNT( \ + BOOST_PARAMETER_FUNCTION_DISPATCH_SPLIT_ARGS(x) \ + ) \ + , BOOST_PARAMETER_FUNCTION_DISPATCH_FWD_DECL_1_Z \ + , x \ + ) \ + template <typename Args> BOOST_PARAMETER_MEMBER_FUNCTION_STATIC( \ + BOOST_PARAMETER_FUNCTION_DISPATCH_BASE_NAME(x) \ + ) inline typename BOOST_PARAMETER_FUNCTION_RESULT_NAME( \ + BOOST_PARAMETER_FUNCTION_DISPATCH_BASE_NAME(x) \ + , BOOST_PARAMETER_FUNCTION_DISPATCH_IS_CONST(x) \ + )<Args>::type BOOST_PARAMETER_FUNCTION_IMPL_NAME( \ + BOOST_PARAMETER_FUNCTION_DISPATCH_BASE_NAME(x) \ + , BOOST_PARAMETER_FUNCTION_DISPATCH_IS_CONST(x) \ + )(Args const& args) \ + BOOST_PP_EXPR_IF(BOOST_PARAMETER_FUNCTION_DISPATCH_IS_CONST(x), const) \ + { \ + return BOOST_PP_EXPR_IF( \ + BOOST_PARAMETER_FUNCTION_DISPATCH_IS_MEMBER(x) \ + , this-> \ + ) BOOST_PARAMETER_FUNCTION_DISPATCH_NAME(x, 0)( \ + static_cast< \ + typename BOOST_PARAMETER_FUNCTION_RESULT_NAME( \ + BOOST_PARAMETER_FUNCTION_DISPATCH_BASE_NAME(x) \ + , BOOST_PARAMETER_FUNCTION_DISPATCH_IS_CONST(x) \ + )<Args>::type(*)() \ + >(BOOST_PARAMETER_AUX_PP_NULLPTR) \ + , args \ + , 0L \ + BOOST_PP_SEQ_FOR_EACH( \ + BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_CAST_R \ + , BOOST_PARAMETER_FUNCTION_DISPATCH_TAG_NAMESPACE(x) \ + , BOOST_PARAMETER_SPLIT_ARG_REQ_SEQ( \ + BOOST_PARAMETER_FUNCTION_DISPATCH_SPLIT_ARGS(x) \ + ) \ + ) \ + ); \ + } \ + BOOST_PP_REPEAT_FROM_TO( \ + 0 \ + , BOOST_PARAMETER_SPLIT_ARG_OPT_COUNT( \ + BOOST_PARAMETER_FUNCTION_DISPATCH_SPLIT_ARGS(x) \ + ) \ + , BOOST_PARAMETER_FUNCTION_DISPATCH_OVERLOAD_Z \ + , x \ + ) \ + BOOST_PARAMETER_FUNCTION_DISPATCH_HEAD_TPL( \ + BOOST_PARAMETER_SPLIT_ARG_OPT_COUNT( \ + BOOST_PARAMETER_FUNCTION_DISPATCH_SPLIT_ARGS(x) \ + ) \ + , x \ + ) \ + inline BOOST_PARAMETER_FUNCTION_DISPATCH_HEAD_PRN( \ + BOOST_PARAMETER_SPLIT_ARG_OPT_COUNT( \ + BOOST_PARAMETER_FUNCTION_DISPATCH_SPLIT_ARGS(x) \ + ) \ + , x \ + , 0 \ + , 0 \ + ) +/**/ + +#endif // include guard + diff --git a/boost/parameter/aux_/preprocessor/impl/function_dispatch_tuple.hpp b/boost/parameter/aux_/preprocessor/impl/function_dispatch_tuple.hpp new file mode 100644 index 0000000000..b24c898e69 --- /dev/null +++ b/boost/parameter/aux_/preprocessor/impl/function_dispatch_tuple.hpp @@ -0,0 +1,33 @@ +// Copyright Daniel Wallin 2006. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_FUNCTION_DISPATCH_TUPLE_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_FUNCTION_DISPATCH_TUPLE_HPP + +#include <boost/preprocessor/tuple/elem.hpp> + +// Accessor macros for the input tuple to the dispatch macros. +#define BOOST_PARAMETER_FUNCTION_DISPATCH_BASE_NAME(x) \ + BOOST_PP_TUPLE_ELEM(5, 0, x) +/**/ + +#define BOOST_PARAMETER_FUNCTION_DISPATCH_SPLIT_ARGS(x) \ + BOOST_PP_TUPLE_ELEM(5, 1, x) +/**/ + +#define BOOST_PARAMETER_FUNCTION_DISPATCH_IS_MEMBER(x) \ + BOOST_PP_TUPLE_ELEM(5, 2, x) +/**/ + +#define BOOST_PARAMETER_FUNCTION_DISPATCH_IS_CONST(x) \ + BOOST_PP_TUPLE_ELEM(5, 3, x) +/**/ + +#define BOOST_PARAMETER_FUNCTION_DISPATCH_TAG_NAMESPACE(x) \ + BOOST_PP_TUPLE_ELEM(5, 4, x) +/**/ + +#endif // include guard + diff --git a/boost/parameter/aux_/preprocessor/impl/function_forward_match.hpp b/boost/parameter/aux_/preprocessor/impl/function_forward_match.hpp new file mode 100644 index 0000000000..3b452ed960 --- /dev/null +++ b/boost/parameter/aux_/preprocessor/impl/function_forward_match.hpp @@ -0,0 +1,43 @@ +// Copyright Daniel Wallin 2006. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_FUNCTION_FORWARD_MATCH_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_FUNCTION_FORWARD_MATCH_HPP + +#include <boost/parameter/config.hpp> + +#if !defined(BOOST_NO_SFINAE) && \ + !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x592)) + +#include <boost/parameter/aux_/pp_impl/match.hpp> +#include <boost/preprocessor/repetition/enum_trailing_params.hpp> + +// Expands to an extra argument that is well-formed +// iff all Args... satisfy the requirements set by params. +#define BOOST_PARAMETER_FUNCTION_FORWARD_MATCH(params, n, prefix) \ + , typename ::boost::parameter::aux::match< \ + params BOOST_PP_ENUM_TRAILING_PARAMS(n, prefix) \ + >::type = params() +/**/ + +#define BOOST_PARAMETER_FUNCTION_FORWARD_MATCH_Z(z, params, n, prefix) \ + , typename ::boost::parameter::aux::match< \ + params BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, n, prefix) \ + >::type = params() +/**/ + +#else // SFINAE/Borland workarounds needed. + +#define BOOST_PARAMETER_FUNCTION_FORWARD_MATCH(params, n, prefix) \ + , params = params() +/**/ + +#define BOOST_PARAMETER_FUNCTION_FORWARD_MATCH_Z(z, params, n, prefix) \ + , params = params() +/**/ + +#endif +#endif // include guard + diff --git a/boost/parameter/aux_/preprocessor/impl/function_name.hpp b/boost/parameter/aux_/preprocessor/impl/function_name.hpp new file mode 100644 index 0000000000..af5d194c49 --- /dev/null +++ b/boost/parameter/aux_/preprocessor/impl/function_name.hpp @@ -0,0 +1,152 @@ +// Copyright Daniel Wallin 2006. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_FUNCTION_NAME_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_FUNCTION_NAME_HPP + +#define BOOST_PARAMETER_MEMBER_FUNCTION_CHECK_STATIC_static () +/**/ + +#include <boost/parameter/aux_/preprocessor/is_nullary.hpp> +#include <boost/preprocessor/cat.hpp> + +#define BOOST_PARAMETER_MEMBER_FUNCTION_IS_STATIC(name) \ + BOOST_PARAMETER_IS_NULLARY( \ + BOOST_PP_CAT(BOOST_PARAMETER_MEMBER_FUNCTION_CHECK_STATIC_, name) \ + ) +/**/ + +#include <boost/preprocessor/seq/seq.hpp> +#include <boost/config.hpp> + +#if defined(BOOST_MSVC) + +// Workaround for MSVC preprocessor. +// +// When stripping static from "static f", msvc will produce " f". The leading +// whitespace doesn't go away when pasting the token with something else, so +// this thing is a hack to strip the whitespace. +#define BOOST_PARAMETER_MEMBER_FUNCTION_STRIP_STATIC_static ( +/**/ + +#define BOOST_PARAMETER_MEMBER_FUNCTION_STRIP_STATIC_AUX(name) \ + BOOST_PP_CAT(BOOST_PARAMETER_MEMBER_FUNCTION_STRIP_STATIC_, name)) +/**/ + +#define BOOST_PARAMETER_MEMBER_FUNCTION_STRIP_STATIC(name) \ + BOOST_PP_SEQ_HEAD( \ + BOOST_PARAMETER_MEMBER_FUNCTION_STRIP_STATIC_AUX(name) \ + ) +/**/ + +#else + +#define BOOST_PARAMETER_MEMBER_FUNCTION_STRIP_STATIC_static +/**/ + +#define BOOST_PARAMETER_MEMBER_FUNCTION_STRIP_STATIC(name) \ + BOOST_PP_CAT(BOOST_PARAMETER_MEMBER_FUNCTION_STRIP_STATIC_, name) +/**/ + +#endif // MSVC workarounds needed + +#include <boost/preprocessor/control/expr_if.hpp> + +#define BOOST_PARAMETER_MEMBER_FUNCTION_STATIC(name) \ + BOOST_PP_EXPR_IF( \ + BOOST_PARAMETER_MEMBER_FUNCTION_IS_STATIC(name), static \ + ) +/**/ + +#include <boost/preprocessor/control/if.hpp> +#include <boost/preprocessor/tuple/eat.hpp> + +#define BOOST_PARAMETER_MEMBER_FUNCTION_NAME(name) \ + BOOST_PP_IF( \ + BOOST_PARAMETER_MEMBER_FUNCTION_IS_STATIC(name) \ + , BOOST_PARAMETER_MEMBER_FUNCTION_STRIP_STATIC \ + , name BOOST_PP_TUPLE_EAT(1) \ + )(name) +/**/ + +// Produces a name for a parameter specification for the function named base. +#define BOOST_PARAMETER_FUNCTION_SPECIFICATION_NAME(base, is_const) \ + BOOST_PP_CAT( \ + BOOST_PP_CAT( \ + BOOST_PP_IF( \ + is_const \ + , boost_param_parameters_const_ \ + , boost_param_parameters_ \ + ) \ + , __LINE__ \ + ) \ + , BOOST_PARAMETER_MEMBER_FUNCTION_NAME(base) \ + ) +/**/ + +// Produces a name for a result type metafunction for the no-spec function +// named base. +#define BOOST_PARAMETER_NO_SPEC_FUNCTION_RESULT_NAME(base, is_const) \ + BOOST_PP_CAT( \ + BOOST_PP_CAT( \ + BOOST_PP_IF( \ + is_const \ + , boost_param_no_spec_result_const_ \ + , boost_param_no_spec_result_ \ + ) \ + , __LINE__ \ + ) \ + , BOOST_PARAMETER_MEMBER_FUNCTION_NAME(base) \ + ) +/**/ + +// Produces a name for a result type metafunction for the function named base. +#define BOOST_PARAMETER_FUNCTION_RESULT_NAME(base, is_const) \ + BOOST_PP_CAT( \ + BOOST_PP_CAT( \ + BOOST_PP_IF( \ + is_const \ + , boost_param_result_const_ \ + , boost_param_result_ \ + ) \ + , __LINE__ \ + ) \ + , BOOST_PARAMETER_MEMBER_FUNCTION_NAME(base) \ + ) +/**/ + +// Produces a name for the implementation function to which the no-spec +// function named base forwards its result type and argument pack. +#define BOOST_PARAMETER_NO_SPEC_FUNCTION_IMPL_NAME(base, is_const) \ + BOOST_PP_CAT( \ + BOOST_PP_CAT( \ + BOOST_PP_IF( \ + is_const \ + , boost_param_no_spec_impl_const \ + , boost_param_no_spec_impl \ + ) \ + , __LINE__ \ + ) \ + , BOOST_PARAMETER_MEMBER_FUNCTION_NAME(base) \ + ) +/**/ + +// Can't do boost_param_impl_ ## basee +// because base might start with an underscore. +// daniel: what? how is that relevant? the reason for using CAT() +// is to make sure base is expanded. i'm not sure we need to here, +// but it's more stable to do it. +#define BOOST_PARAMETER_FUNCTION_IMPL_NAME(base, is_const) \ + BOOST_PP_CAT( \ + BOOST_PP_CAT( \ + BOOST_PP_IF(is_const, boost_param_impl_const, boost_param_impl) \ + , __LINE__ \ + ) \ + , BOOST_PARAMETER_MEMBER_FUNCTION_NAME(base) \ + ) +/**/ + +#endif // include guard + diff --git a/boost/parameter/aux_/preprocessor/impl/no_spec_overloads.hpp b/boost/parameter/aux_/preprocessor/impl/no_spec_overloads.hpp new file mode 100644 index 0000000000..345e408dd4 --- /dev/null +++ b/boost/parameter/aux_/preprocessor/impl/no_spec_overloads.hpp @@ -0,0 +1,331 @@ +// Copyright Cromwell D. Enage 2018. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_NO_SPEC_OVERLOADS_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_NO_SPEC_OVERLOADS_HPP + +#include <boost/parameter/aux_/preprocessor/impl/function_name.hpp> + +// Defines the no-spec implementation function header. +#define BOOST_PARAMETER_NO_SPEC_FUNCTION_IMPL_HEAD(name, is_const) \ + template <typename ResultType, typename Args> \ + BOOST_PARAMETER_MEMBER_FUNCTION_STATIC(name) ResultType \ + BOOST_PARAMETER_NO_SPEC_FUNCTION_IMPL_NAME( \ + name, is_const \ + )(ResultType(*)(), Args const& args) +/**/ + +#include <boost/parameter/config.hpp> + +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + +#include <boost/parameter/aux_/preprocessor/impl/parenthesized_return_type.hpp> + +// Expands to the result metafunction for the specified no-spec function. +#if defined(BOOST_PARAMETER_CAN_USE_MP11) +#define BOOST_PARAMETER_NO_SPEC_FUNCTION_HEAD(result, name, is_const) \ + template <typename TaggedArg0, typename ...TaggedArgs> \ + using BOOST_PARAMETER_NO_SPEC_FUNCTION_RESULT_NAME(name, is_const) \ + = typename BOOST_PARAMETER_PARENTHESIZED_RETURN_TYPE(result); +/**/ +#else +#define BOOST_PARAMETER_NO_SPEC_FUNCTION_HEAD(result, name, is_const) \ + template <typename TaggedArg0, typename ...TaggedArgs> \ + struct BOOST_PARAMETER_NO_SPEC_FUNCTION_RESULT_NAME(name, is_const) \ + : BOOST_PARAMETER_PARENTHESIZED_RETURN_TYPE(result) \ + { \ + }; +/**/ +#endif // BOOST_PARAMETER_CAN_USE_MP11 + +#include <boost/parameter/compose.hpp> +#include <boost/parameter/are_tagged_arguments.hpp> +#include <boost/parameter/aux_/preprocessor/impl/parenthesized_type.hpp> +#include <boost/core/enable_if.hpp> + +// Exapnds to a variadic constructor that is enabled if and only if all its +// arguments are tagged arguments. The enclosing class must inherit from the +// specified base class, which in turn must implement a constructor that takes +// in the argument pack that this one passes on. +#define BOOST_PARAMETER_NO_SPEC_CONSTRUCTOR(class_, base) \ + template < \ + typename TaggedArg0 \ + , typename ...TaggedArgs \ + , typename = typename ::boost::enable_if< \ + ::boost::parameter \ + ::are_tagged_arguments<TaggedArg0,TaggedArgs...> \ + >::type \ + > inline explicit \ + class_(TaggedArg0 const& arg0, TaggedArgs const&... args) \ + : BOOST_PARAMETER_PARENTHESIZED_TYPE(base)( \ + ::boost::parameter::compose(arg0, args...) \ + ) \ + { \ + } +/**/ + +// Exapnds to a variadic constructor that is enabled if and only if all its +// arguments are tagged arguments. The specified function must be able to +// take in the argument pack that this constructor passes on. +#define BOOST_PARAMETER_NO_SPEC_NO_BASE_CONSTRUCTOR(class_, func) \ + template < \ + typename TaggedArg0 \ + , typename ...TaggedArgs \ + , typename = typename ::boost::enable_if< \ + ::boost::parameter \ + ::are_tagged_arguments<TaggedArg0,TaggedArgs...> \ + >::type \ + > inline explicit \ + class_(TaggedArg0 const& arg0, TaggedArgs const&... args) \ + { \ + func(::boost::parameter::compose(arg0, args...)); \ + } +/**/ + +#include <boost/parameter/aux_/preprocessor/nullptr.hpp> +#include <boost/preprocessor/control/expr_if.hpp> + +// Exapnds to a variadic function that is enabled if and only if +// all its arguments are tagged arguments. +#define BOOST_PARAMETER_NO_SPEC_FUNCTION_OVERLOAD(name, impl, is_m, c) \ + template <typename TaggedArg0, typename ...TaggedArgs> \ + BOOST_PARAMETER_MEMBER_FUNCTION_STATIC(impl) \ + inline typename ::boost::lazy_enable_if< \ + ::boost::parameter \ + ::are_tagged_arguments<TaggedArg0,TaggedArgs...> \ + , BOOST_PARAMETER_NO_SPEC_FUNCTION_RESULT_NAME( \ + impl, c \ + )<TaggedArg0,TaggedArgs...> \ + >::type BOOST_PARAMETER_MEMBER_FUNCTION_NAME(name) \ + (TaggedArg0 const& arg0, TaggedArgs const&... args) \ + BOOST_PP_EXPR_IF(c, const) \ + { \ + return BOOST_PP_EXPR_IF(is_m, this->) \ + BOOST_PARAMETER_NO_SPEC_FUNCTION_IMPL_NAME(impl, c)( \ + static_cast< \ + typename BOOST_PARAMETER_NO_SPEC_FUNCTION_RESULT_NAME( \ + impl, c \ + )<TaggedArg0,TaggedArgs...>::type(*)() \ + >(BOOST_PARAMETER_AUX_PP_NULLPTR) \ + , ::boost::parameter::compose(arg0, args...) \ + ); \ + } +/**/ + +#else // !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + +#include <boost/parameter/aux_/void.hpp> +#include <boost/parameter/aux_/preprocessor/impl/parenthesized_return_type.hpp> +#include <boost/preprocessor/facilities/intercept.hpp> +#include <boost/preprocessor/repetition/enum_binary_params.hpp> + +// Expands to the result metafunction for the specified no-spec function. +#define BOOST_PARAMETER_NO_SPEC_FUNCTION_HEAD(result, name, is_const) \ + template < \ + BOOST_PP_ENUM_BINARY_PARAMS( \ + BOOST_PARAMETER_COMPOSE_MAX_ARITY \ + , typename TaggedArg \ + , = ::boost::parameter::void_ BOOST_PP_INTERCEPT \ + ) \ + > \ + struct BOOST_PARAMETER_NO_SPEC_FUNCTION_RESULT_NAME(name, is_const) \ + : BOOST_PARAMETER_PARENTHESIZED_RETURN_TYPE(result) \ + { \ + }; +/**/ + +#include <boost/parameter/compose.hpp> +#include <boost/parameter/aux_/preprocessor/impl/parenthesized_type.hpp> +#include <boost/preprocessor/comparison/equal.hpp> +#include <boost/preprocessor/control/expr_if.hpp> +#include <boost/preprocessor/repetition/enum_params.hpp> +#include <boost/preprocessor/tuple/elem.hpp> + +#if defined(BOOST_NO_SFINAE) + +// Exapnds to a tagged-argument constructor overload that passes the argument +// pack to the base class delegate constructor. +#define BOOST_PARAMETER_NO_SPEC_CONSTRUCTOR_OVERLOAD_Z(z, n, data) \ + template <BOOST_PP_ENUM_PARAMS_Z(z, n, typename TaggedArg)> \ + BOOST_PP_EXPR_IF(BOOST_PP_EQUAL(n, 1), explicit) inline \ + BOOST_PP_TUPLE_ELEM(2, 0, data)( \ + BOOST_PP_ENUM_BINARY_PARAMS_Z(z, n, TaggedArg, const& arg) \ + ) : BOOST_PARAMETER_PARENTHESIZED_TYPE(BOOST_PP_TUPLE_ELEM(2, 1, data))( \ + ::boost::parameter::compose(BOOST_PP_ENUM_PARAMS_Z(z, n, arg)) \ + ) \ + { \ + } +/**/ + +// Exapnds to a tagged-argument constructor overload that passes the argument +// pack to the delegate function. +#define BOOST_PARAMETER_NO_SPEC_NO_BASE_CONSTRUCTOR_OVERLOAD_Z(z, n, data) \ + template <BOOST_PP_ENUM_PARAMS_Z(z, n, typename TaggedArg)> \ + BOOST_PP_EXPR_IF(BOOST_PP_EQUAL(n, 1), explicit) inline \ + BOOST_PP_TUPLE_ELEM(2, 0, data)( \ + BOOST_PP_ENUM_BINARY_PARAMS_Z(z, n, TaggedArg, const& a) \ + ) \ + { \ + BOOST_PP_TUPLE_ELEM(2, 1, data)( \ + ::boost::parameter::compose(BOOST_PP_ENUM_PARAMS_Z(z, n, a)) \ + ); \ + } +/**/ + +#include <boost/parameter/aux_/preprocessor/nullptr.hpp> + +// Exapnds to a tagged-argument function overload. +#define BOOST_PARAMETER_NO_SPEC_FUNCTION_OVERLOAD_Z(z, n, data) \ + template <BOOST_PP_ENUM_PARAMS_Z(z, n, typename TaggedArg)> \ + BOOST_PARAMETER_MEMBER_FUNCTION_STATIC(BOOST_PP_TUPLE_ELEM(4, 1, data)) \ + inline typename BOOST_PARAMETER_NO_SPEC_FUNCTION_RESULT_NAME( \ + BOOST_PP_TUPLE_ELEM(4, 1, data) \ + , BOOST_PP_TUPLE_ELEM(4, 3, data) \ + )<BOOST_PP_ENUM_PARAMS_Z(z, n, TaggedArg)>::type \ + BOOST_PARAMETER_MEMBER_FUNCTION_NAME( \ + BOOST_PP_TUPLE_ELEM(4, 0, data) \ + )(BOOST_PP_ENUM_BINARY_PARAMS_Z(z, n, TaggedArg, const& arg)) \ + BOOST_PP_EXPR_IF(BOOST_PP_TUPLE_ELEM(4, 3, data), const) \ + { \ + return BOOST_PP_EXPR_IF(BOOST_PP_TUPLE_ELEM(4, 2, data), this->) \ + BOOST_PARAMETER_NO_SPEC_FUNCTION_IMPL_NAME( \ + BOOST_PP_TUPLE_ELEM(4, 1, data) \ + , BOOST_PP_TUPLE_ELEM(4, 3, data) \ + )( \ + static_cast< \ + typename BOOST_PARAMETER_NO_SPEC_FUNCTION_RESULT_NAME( \ + BOOST_PP_TUPLE_ELEM(4, 1, data) \ + , BOOST_PP_TUPLE_ELEM(4, 3, data) \ + )<BOOST_PP_ENUM_PARAMS_Z(z, n, TaggedArg)>::type(*)() \ + >(BOOST_PARAMETER_AUX_PP_NULLPTR) \ + , ::boost::parameter::compose(BOOST_PP_ENUM_PARAMS_Z(z, n, arg)) \ + ); \ + } +/**/ + +#else // !defined(BOOST_NO_SFINAE) + +#include <boost/parameter/are_tagged_arguments.hpp> +#include <boost/parameter/aux_/preprocessor/nullptr.hpp> +#include <boost/core/enable_if.hpp> + +// Exapnds to a tagged-argument constructor overload that passes the argument +// pack to the base class delegate constructor. This constructor is enabled +// if and only if all its arguments are tagged arguments. +#define BOOST_PARAMETER_NO_SPEC_CONSTRUCTOR_OVERLOAD_Z(z, n, data) \ + template <BOOST_PP_ENUM_PARAMS_Z(z, n, typename TaggedArg)> \ + BOOST_PP_EXPR_IF(BOOST_PP_EQUAL(n, 1), explicit) inline \ + BOOST_PP_TUPLE_ELEM(2, 0, data)( \ + BOOST_PP_ENUM_BINARY_PARAMS_Z(z, n, TaggedArg, const& arg) \ + , typename ::boost::enable_if< \ + ::boost::parameter::are_tagged_arguments< \ + BOOST_PP_ENUM_PARAMS_Z(z, n, TaggedArg) \ + > \ + >::type* = BOOST_PARAMETER_AUX_PP_NULLPTR \ + ) : BOOST_PARAMETER_PARENTHESIZED_TYPE(BOOST_PP_TUPLE_ELEM(2, 1, data))( \ + ::boost::parameter::compose(BOOST_PP_ENUM_PARAMS_Z(z, n, arg)) \ + ) \ + { \ + } +/**/ + +// Exapnds to a tagged-argument constructor overload that passes the argument +// pack to the delegate function. This constructor is enabled if and only if +// all its arguments are tagged arguments. +#define BOOST_PARAMETER_NO_SPEC_NO_BASE_CONSTRUCTOR_OVERLOAD_Z(z, n, data) \ + template <BOOST_PP_ENUM_PARAMS_Z(z, n, typename TaggedArg)> \ + BOOST_PP_EXPR_IF(BOOST_PP_EQUAL(n, 1), explicit) inline \ + BOOST_PP_TUPLE_ELEM(2, 0, data)( \ + BOOST_PP_ENUM_BINARY_PARAMS_Z(z, n, TaggedArg, const& a) \ + , typename ::boost::enable_if< \ + ::boost::parameter::are_tagged_arguments< \ + BOOST_PP_ENUM_PARAMS_Z(z, n, TaggedArg) \ + > \ + >::type* = BOOST_PARAMETER_AUX_PP_NULLPTR \ + ) \ + { \ + BOOST_PP_TUPLE_ELEM(2, 1, data)( \ + ::boost::parameter::compose(BOOST_PP_ENUM_PARAMS_Z(z, n, a)) \ + ); \ + } +/**/ + +// Exapnds to a function overload that is enabled if and only if +// all its arguments are tagged arguments. +#define BOOST_PARAMETER_NO_SPEC_FUNCTION_OVERLOAD_Z(z, n, data) \ + template <BOOST_PP_ENUM_PARAMS_Z(z, n, typename TaggedArg)> \ + BOOST_PARAMETER_MEMBER_FUNCTION_STATIC(BOOST_PP_TUPLE_ELEM(4, 1, data)) \ + inline typename ::boost::lazy_enable_if< \ + ::boost::parameter \ + ::are_tagged_arguments<BOOST_PP_ENUM_PARAMS_Z(z, n, TaggedArg)> \ + , BOOST_PARAMETER_NO_SPEC_FUNCTION_RESULT_NAME( \ + BOOST_PP_TUPLE_ELEM(4, 1, data) \ + , BOOST_PP_TUPLE_ELEM(4, 3, data) \ + )<BOOST_PP_ENUM_PARAMS_Z(z, n, TaggedArg)> \ + >::type BOOST_PARAMETER_MEMBER_FUNCTION_NAME( \ + BOOST_PP_TUPLE_ELEM(4, 0, data) \ + )(BOOST_PP_ENUM_BINARY_PARAMS_Z(z, n, TaggedArg, const& arg)) \ + BOOST_PP_EXPR_IF(BOOST_PP_TUPLE_ELEM(4, 3, data), const) \ + { \ + return BOOST_PP_EXPR_IF(BOOST_PP_TUPLE_ELEM(4, 2, data), this->) \ + BOOST_PARAMETER_NO_SPEC_FUNCTION_IMPL_NAME( \ + BOOST_PP_TUPLE_ELEM(4, 1, data) \ + , BOOST_PP_TUPLE_ELEM(4, 3, data) \ + )( \ + static_cast< \ + typename BOOST_PARAMETER_NO_SPEC_FUNCTION_RESULT_NAME( \ + BOOST_PP_TUPLE_ELEM(4, 1, data) \ + , BOOST_PP_TUPLE_ELEM(4, 3, data) \ + )<BOOST_PP_ENUM_PARAMS_Z(z, n, TaggedArg)>::type(*)() \ + >(BOOST_PARAMETER_AUX_PP_NULLPTR) \ + , ::boost::parameter::compose(BOOST_PP_ENUM_PARAMS_Z(z, n, arg)) \ + ); \ + } +/**/ + +#endif // BOOST_NO_SFINAE + +#include <boost/preprocessor/arithmetic/inc.hpp> +#include <boost/preprocessor/repetition/repeat_from_to.hpp> + +// Emulates a variadic constructor that is enabled if and only if all its +// arguments are tagged arguments. The enclosing class must inherit from the +// specified base class, which in turn must implement a constructor that takes +// in the argument pack that this one passes on. +#define BOOST_PARAMETER_NO_SPEC_CONSTRUCTOR(class_, base) \ + BOOST_PP_REPEAT_FROM_TO( \ + 1 \ + , BOOST_PP_INC(BOOST_PARAMETER_COMPOSE_MAX_ARITY) \ + , BOOST_PARAMETER_NO_SPEC_CONSTRUCTOR_OVERLOAD_Z \ + , (class_, base) \ + ) +/**/ + +// Emulates a variadic constructor that is enabled if and only if all its +// arguments are tagged arguments. The specified function must be able to +// take in the argument pack that this constructor passes on. +#define BOOST_PARAMETER_NO_SPEC_NO_BASE_CONSTRUCTOR(class_, func) \ + BOOST_PP_REPEAT_FROM_TO( \ + 1 \ + , BOOST_PP_INC(BOOST_PARAMETER_COMPOSE_MAX_ARITY) \ + , BOOST_PARAMETER_NO_SPEC_NO_BASE_CONSTRUCTOR_OVERLOAD_Z \ + , (class_, func) \ + ) +/**/ + +// Emulates a variadic function that is enabled if and only if +// all its arguments are tagged arguments. +#define BOOST_PARAMETER_NO_SPEC_FUNCTION_OVERLOAD(name, impl, is_m, c) \ + BOOST_PP_REPEAT_FROM_TO( \ + 1 \ + , BOOST_PP_INC(BOOST_PARAMETER_COMPOSE_MAX_ARITY) \ + , BOOST_PARAMETER_NO_SPEC_FUNCTION_OVERLOAD_Z \ + , (name, impl, is_m, c) \ + ) +/**/ + +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING +#endif // include guard + diff --git a/boost/parameter/aux_/preprocessor/impl/parenthesized_return_type.hpp b/boost/parameter/aux_/preprocessor/impl/parenthesized_return_type.hpp new file mode 100644 index 0000000000..6bd8a62951 --- /dev/null +++ b/boost/parameter/aux_/preprocessor/impl/parenthesized_return_type.hpp @@ -0,0 +1,122 @@ +// Copyright Cromwell D. Enage 2019. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_PARENTHESIZED_RETURN_TYPE_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_PARENTHESIZED_RETURN_TYPE_HPP + +namespace boost { namespace parameter { namespace aux { + + // A metafunction that transforms void(*)(T) -> identity<T> + template <typename UnaryFunctionPointer> + struct unaryfunptr_return_type; +}}} // namespace boost::parameter::aux + +#include <boost/parameter/config.hpp> + +#if defined(BOOST_PARAMETER_CAN_USE_MP11) +#include <boost/mp11/utility.hpp> +#else +#include <boost/mpl/identity.hpp> +#endif + +namespace boost { namespace parameter { namespace aux { + + template <typename Arg> + struct unaryfunptr_return_type<void(*)(Arg)> + { +#if defined(BOOST_PARAMETER_CAN_USE_MP11) + using type = ::boost::mp11::mp_identity<Arg>; +#else + typedef ::boost::mpl::identity<Arg> type; +#endif + }; + + template <> + struct unaryfunptr_return_type<void(*)(void)> + { +#if defined(BOOST_PARAMETER_CAN_USE_MP11) + using type = ::boost::mp11::mp_identity<void>; +#else + typedef ::boost::mpl::identity<void> type; +#endif + }; +}}} // namespace boost::parameter::aux + +#if !defined(BOOST_NO_SFINAE) +#include <boost/core/enable_if.hpp> + +namespace boost { namespace parameter { namespace aux { + + template <typename Pred, typename Ret> + struct unaryfunptr_return_type<void(*)(::boost::enable_if<Pred,Ret>)> + { + typedef ::boost::enable_if<Pred,Ret> type; + }; + + template <bool b, typename Ret> + struct unaryfunptr_return_type<void(*)(::boost::enable_if_c<b,Ret>)> + { + typedef ::boost::enable_if_c<b,Ret> type; + }; + + template <typename Pred, typename Ret> + struct unaryfunptr_return_type<void(*)(::boost::lazy_enable_if<Pred,Ret>)> + { + typedef ::boost::lazy_enable_if<Pred,Ret> type; + }; + + template <bool b, typename Ret> + struct unaryfunptr_return_type<void(*)(::boost::lazy_enable_if_c<b,Ret>)> + { + typedef ::boost::lazy_enable_if_c<b,Ret> type; + }; + + template <typename Pred, typename Ret> + struct unaryfunptr_return_type<void(*)(::boost::disable_if<Pred,Ret>)> + { + typedef ::boost::disable_if<Pred,Ret> type; + }; + + template <bool b, typename Ret> + struct unaryfunptr_return_type<void(*)(::boost::disable_if_c<b,Ret>)> + { + typedef ::boost::disable_if_c<b,Ret> type; + }; + + template <typename B, typename Ret> + struct unaryfunptr_return_type<void(*)(::boost::lazy_disable_if<B,Ret>)> + { + typedef ::boost::lazy_disable_if<B,Ret> type; + }; + + template <bool b, typename Ret> + struct unaryfunptr_return_type<void(*)(::boost::lazy_disable_if_c<b,Ret>)> + { + typedef ::boost::lazy_disable_if_c<b,Ret> type; + }; +}}} // namespace boost::parameter::aux + +#if !defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) +#include <type_traits> + +namespace boost { namespace parameter { namespace aux { + + template <bool b, typename Ret> + struct unaryfunptr_return_type<void(*)(::std::enable_if<b,Ret>)> + { + typedef ::std::enable_if<b,Ret> type; + }; +}}} // namespace boost::parameter::aux + +#endif // BOOST_NO_CXX11_HDR_TYPE_TRAITS +#endif // BOOST_NO_SFINAE + +// A macro that takes a parenthesized C++ type name (T) and transforms it +// into an un-parenthesized type expression equivalent to identity<T>. +#define BOOST_PARAMETER_PARENTHESIZED_RETURN_TYPE(x) \ + ::boost::parameter::aux::unaryfunptr_return_type< void(*)x >::type + +#endif // include guard + diff --git a/boost/parameter/aux_/preprocessor/impl/parenthesized_type.hpp b/boost/parameter/aux_/preprocessor/impl/parenthesized_type.hpp new file mode 100644 index 0000000000..f3d9ed9a90 --- /dev/null +++ b/boost/parameter/aux_/preprocessor/impl/parenthesized_type.hpp @@ -0,0 +1,34 @@ +// Copyright David Abrahams 2006. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_PARENTHESIZED_TYPE_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_PARENTHESIZED_TYPE_HPP + +namespace boost { namespace parameter { namespace aux { + + // A metafunction that transforms void(*)(T) -> T + template <typename UnaryFunctionPointer> + struct unaryfunptr_arg_type; + + template <typename Arg> + struct unaryfunptr_arg_type<void(*)(Arg)> + { + typedef Arg type; + }; + + template <> + struct unaryfunptr_arg_type<void(*)(void)> + { + typedef void type; + }; +}}} // namespace boost::parameter::aux + +// A macro that takes a parenthesized C++ type name (T) and transforms it +// into an un-parenthesized type expression equivalent to T. +#define BOOST_PARAMETER_PARENTHESIZED_TYPE(x) \ + ::boost::parameter::aux::unaryfunptr_arg_type< void(*)x >::type + +#endif // include guard + diff --git a/boost/parameter/aux_/preprocessor/impl/specification.hpp b/boost/parameter/aux_/preprocessor/impl/specification.hpp new file mode 100644 index 0000000000..d2a4638a83 --- /dev/null +++ b/boost/parameter/aux_/preprocessor/impl/specification.hpp @@ -0,0 +1,109 @@ +// Copyright Daniel Wallin 2006. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_SPECIFICATION_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_SPECIFICATION_HPP + +#include <boost/parameter/optional.hpp> + +// Helper macros for BOOST_PARAMETER_SPECIFICATION_ELEM_R. +#define BOOST_PARAMETER_QUALIFIED_TAG_optional(tag) \ + optional<tag +/**/ + +#include <boost/parameter/required.hpp> + +#define BOOST_PARAMETER_QUALIFIED_TAG_required(tag) \ + required<tag +/**/ + +#include <boost/parameter/deduced.hpp> + +#define BOOST_PARAMETER_QUALIFIED_TAG_deduced_optional(tag) \ + optional< ::boost::parameter::deduced<tag> +/**/ + +#define BOOST_PARAMETER_QUALIFIED_TAG_deduced_required(tag) \ + required< ::boost::parameter::deduced<tag> +/**/ + +#include <boost/parameter/aux_/preprocessor/impl/argument_specs.hpp> +#include <boost/parameter/config.hpp> +#include <boost/preprocessor/punctuation/comma_if.hpp> +#include <boost/preprocessor/cat.hpp> + +#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) + +#include <boost/parameter/aux_/use_default.hpp> + +#define BOOST_PARAMETER_SPECIFICATION_ELEM_R(r, tag_namespace, i, elem) \ + BOOST_PP_COMMA_IF(i) ::boost::parameter::BOOST_PP_CAT( \ + BOOST_PARAMETER_QUALIFIED_TAG_ \ + , BOOST_PARAMETER_FN_ARG_QUALIFIER(elem) \ + )(tag_namespace::BOOST_PARAMETER_FN_ARG_NAME(elem)) \ + , ::boost::parameter::aux::use_default \ + > +/**/ + +#else // !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) + +#include <boost/parameter/aux_/pp_impl/unwrap_predicate.hpp> + +// Expands to each boost::parameter::parameters<> element type. +#define BOOST_PARAMETER_SPECIFICATION_ELEM_R(r, tag_namespace, i, elem) \ + BOOST_PP_COMMA_IF(i) ::boost::parameter::BOOST_PP_CAT( \ + BOOST_PARAMETER_QUALIFIED_TAG_ \ + , BOOST_PARAMETER_FN_ARG_QUALIFIER(elem) \ + )(tag_namespace::BOOST_PARAMETER_FN_ARG_NAME(elem)) \ + , typename ::boost::parameter::aux::unwrap_predicate< \ + void BOOST_PARAMETER_FN_ARG_PRED(elem) \ + >::type \ + > +/**/ + +#endif // Borland workarounds needed. + +#include <boost/parameter/parameters.hpp> +#include <boost/parameter/aux_/preprocessor/impl/function_name.hpp> +#include <boost/preprocessor/control/if.hpp> +#include <boost/preprocessor/seq/for_each_i.hpp> + +// Expands to a boost::parameter::parameters<> specialization for the +// function named base. Used by BOOST_PARAMETER_CONSTRUCTOR_AUX and +// BOOST_PARAMETER_FUNCTION_HEAD for their respective ParameterSpec models. +#define BOOST_PARAMETER_SPECIFICATION(tag_ns, base, split_args, is_const) \ + template <typename BoostParameterDummy> \ + struct BOOST_PP_CAT( \ + BOOST_PP_CAT( \ + BOOST_PP_IF( \ + is_const \ + , boost_param_params_const_ \ + , boost_param_params_ \ + ) \ + , __LINE__ \ + ) \ + , BOOST_PARAMETER_MEMBER_FUNCTION_NAME(base) \ + ) : ::boost::parameter::parameters< \ + BOOST_PP_SEQ_FOR_EACH_I( \ + BOOST_PARAMETER_SPECIFICATION_ELEM_R, tag_ns, split_args \ + ) \ + > \ + { \ + }; \ + typedef BOOST_PP_CAT( \ + BOOST_PP_CAT( \ + BOOST_PP_IF( \ + is_const \ + , boost_param_params_const_ \ + , boost_param_params_ \ + ) \ + , __LINE__ \ + ) \ + , BOOST_PARAMETER_MEMBER_FUNCTION_NAME(base) \ + )<int> +/**/ + +#endif // include guard + diff --git a/boost/parameter/aux_/preprocessor/impl/split_args.hpp b/boost/parameter/aux_/preprocessor/impl/split_args.hpp new file mode 100644 index 0000000000..bfda33b393 --- /dev/null +++ b/boost/parameter/aux_/preprocessor/impl/split_args.hpp @@ -0,0 +1,71 @@ +// Copyright Daniel Wallin 2006. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_SPLIT_ARGS_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_SPLIT_ARGS_HPP + +#include <boost/preprocessor/tuple/elem.hpp> + +// Accessor macros for the split_args tuple. +#define BOOST_PARAMETER_SPLIT_ARG_REQ_COUNT(x) BOOST_PP_TUPLE_ELEM(4, 0, x) +#define BOOST_PARAMETER_SPLIT_ARG_REQ_SEQ(x) BOOST_PP_TUPLE_ELEM(4, 1, x) +#define BOOST_PARAMETER_SPLIT_ARG_OPT_COUNT(x) BOOST_PP_TUPLE_ELEM(4, 2, x) +#define BOOST_PARAMETER_SPLIT_ARG_OPT_SEQ(x) BOOST_PP_TUPLE_ELEM(4, 3, x) + +#include <boost/preprocessor/arithmetic/inc.hpp> +#include <boost/preprocessor/seq/push_back.hpp> + +// Helper macros for BOOST_PARAMETER_FUNCTION_SPLIT_ARGS. +#define BOOST_PARAMETER_FUNCTION_SPLIT_ARG_required(s_a, arg) \ + ( \ + BOOST_PP_INC(BOOST_PARAMETER_SPLIT_ARG_REQ_COUNT(s_a)) \ + , BOOST_PP_SEQ_PUSH_BACK(BOOST_PARAMETER_SPLIT_ARG_REQ_SEQ(s_a), arg) \ + , BOOST_PARAMETER_SPLIT_ARG_OPT_COUNT(s_a) \ + , BOOST_PARAMETER_SPLIT_ARG_OPT_SEQ(s_a) \ + ) +/**/ + +#define BOOST_PARAMETER_FUNCTION_SPLIT_ARG_deduced_required(split_args, arg) \ + BOOST_PARAMETER_FUNCTION_SPLIT_ARG_required(split_args, arg) +/**/ + +#define BOOST_PARAMETER_FUNCTION_SPLIT_ARG_optional(s_a, arg) \ + ( \ + BOOST_PARAMETER_SPLIT_ARG_REQ_COUNT(s_a) \ + , BOOST_PARAMETER_SPLIT_ARG_REQ_SEQ(s_a) \ + , BOOST_PP_INC(BOOST_PARAMETER_SPLIT_ARG_OPT_COUNT(s_a)) \ + , BOOST_PP_SEQ_PUSH_BACK(BOOST_PARAMETER_SPLIT_ARG_OPT_SEQ(s_a), arg) \ + ) +/**/ + +#define BOOST_PARAMETER_FUNCTION_SPLIT_ARG_deduced_optional(split_args, arg) \ + BOOST_PARAMETER_FUNCTION_SPLIT_ARG_optional(split_args, arg) +/**/ + +#include <boost/parameter/aux_/preprocessor/impl/argument_specs.hpp> +#include <boost/preprocessor/cat.hpp> + +#define BOOST_PARAMETER_FUNCTION_SPLIT_ARG(s, split_args, arg) \ + BOOST_PP_CAT( \ + BOOST_PARAMETER_FUNCTION_SPLIT_ARG_ \ + , BOOST_PARAMETER_FN_ARG_QUALIFIER(arg) \ + )(split_args, arg) +/**/ + +#include <boost/preprocessor/seq/fold_left.hpp> +#include <boost/preprocessor/seq/seq.hpp> + +// Expands from the flattened BOOST_PARAMETER_FUNCTION et. al. arg sequence to +// the tuple (required_count, required_args, optional_count, optional_args). +#define BOOST_PARAMETER_FUNCTION_SPLIT_ARGS(args) \ + BOOST_PP_SEQ_FOLD_LEFT( \ + BOOST_PARAMETER_FUNCTION_SPLIT_ARG \ + , (0, BOOST_PP_SEQ_NIL, 0, BOOST_PP_SEQ_NIL) \ + , args \ + ) +/**/ + +#endif // include guard + diff --git a/boost/parameter/aux_/preprocessor/inc_binary_seq.hpp b/boost/parameter/aux_/preprocessor/inc_binary_seq.hpp new file mode 100644 index 0000000000..9796e336a1 --- /dev/null +++ b/boost/parameter/aux_/preprocessor/inc_binary_seq.hpp @@ -0,0 +1,78 @@ +// Copyright Cromwell D. Enage 2013. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_INC_BINARY_SEQ_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_INC_BINARY_SEQ_HPP + +#include <boost/preprocessor/seq/push_back.hpp> + +// This macro keeps the rest of the sequence if carry == 0. +#define BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ_0(seq, element) \ + (BOOST_PP_SEQ_PUSH_BACK(seq, element), 0) +/**/ + +#include <boost/preprocessor/control/iif.hpp> + +// This macro updates the rest of the sequence if carry == 1. +#define BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ_1(seq, element) \ + (BOOST_PP_SEQ_PUSH_BACK(seq, BOOST_PP_IIF(element, 0, 1)), element) +/**/ + +#include <boost/preprocessor/tuple/elem.hpp> +#include <boost/preprocessor/cat.hpp> + +// This macro maintains a tuple (seq, carry), where seq is the intermediate +// result and carry is a flag that will unset upon finding an element == 0. +#define BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ_OP(s, result_tuple, element) \ + BOOST_PP_CAT( \ + BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ_ \ + , BOOST_PP_TUPLE_ELEM(2, 1, result_tuple) \ + )(BOOST_PP_TUPLE_ELEM(2, 0, result_tuple), element) +/**/ + +// This macro keeps the sequence at its original length if carry == 0. +#define BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ_IMPL_0(seq) seq +/**/ + +// This macro appends a zero to seq if carry == 1. +#define BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ_IMPL_1(seq) \ + BOOST_PP_SEQ_PUSH_BACK(seq, 0) +/**/ + +// This macro takes in the tuple (seq, carry), with carry indicating whether +// or not seq originally contained all 1s. If so, then seq now contains all +// 0s, and this macro pushes an extra 0 before expanding to the new sequence. +// Otherwise, this macro expands to seq as is. +#define BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ_IMPL(seq_and_carry) \ + BOOST_PP_CAT( \ + BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ_IMPL_ \ + , BOOST_PP_TUPLE_ELEM(2, 1, seq_and_carry) \ + )(BOOST_PP_TUPLE_ELEM(2, 0, seq_and_carry)) +/**/ + +#include <boost/preprocessor/seq/seq.hpp> +#include <boost/preprocessor/seq/fold_left.hpp> + +// This macro treats the specified sequence of 1s and 0s like a binary number +// in reverse and expands to a sequence representing the next value up. +// However, if the input sequence contains all 1s, then the output sequence +// will contain one more element but all 0s. +// +// Examples: +// seq = (1)(0)(1)(0) --> return (0)(1)(1)(0) +// seq = (1)(1)(1)(0) --> return (0)(0)(0)(1) +// seq = (1)(1)(1)(1) --> return (0)(0)(0)(0)(0) +#define BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(seq) \ + BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ_IMPL( \ + BOOST_PP_SEQ_FOLD_LEFT( \ + BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ_OP \ + , (BOOST_PP_SEQ_NIL, 1) \ + , seq \ + ) \ + ) +/**/ + +#endif // include guard + diff --git a/boost/parameter/aux_/preprocessor/is_binary.hpp b/boost/parameter/aux_/preprocessor/is_binary.hpp new file mode 100644 index 0000000000..a8f3c67afb --- /dev/null +++ b/boost/parameter/aux_/preprocessor/is_binary.hpp @@ -0,0 +1,31 @@ +// Copyright Daniel Wallin 2006. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_IS_BINARY_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_IS_BINARY_HPP + +#include <boost/config.hpp> +#include <boost/config/workaround.hpp> + +#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +// From Paul Mensonides +#include <boost/preprocessor/punctuation/comma.hpp> +#include <boost/preprocessor/detail/split.hpp> +#define BOOST_PARAMETER_IS_BINARY(x) \ + BOOST_PP_SPLIT(1, BOOST_PARAMETER_IS_BINARY_C x BOOST_PP_COMMA() 0) +/**/ +#include <boost/preprocessor/punctuation/paren.hpp> +#include <boost/preprocessor/tuple/eat.hpp> +#define BOOST_PARAMETER_IS_BINARY_C(x,y) \ + ~, 1 BOOST_PP_RPAREN() \ + BOOST_PP_TUPLE_EAT(2) BOOST_PP_LPAREN() ~ +/**/ +#else +#include <boost/preprocessor/detail/is_binary.hpp> +#define BOOST_PARAMETER_IS_BINARY(x) BOOST_PP_IS_BINARY(x) +#endif + +#endif // include guard + diff --git a/boost/parameter/aux_/preprocessor/is_nullary.hpp b/boost/parameter/aux_/preprocessor/is_nullary.hpp new file mode 100644 index 0000000000..5d8e59c538 --- /dev/null +++ b/boost/parameter/aux_/preprocessor/is_nullary.hpp @@ -0,0 +1,32 @@ +// Copyright Daniel Wallin 2006. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_IS_NULLARY_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_IS_NULLARY_HPP + +#include <boost/config.hpp> +#include <boost/config/workaround.hpp> + +#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +// From Paul Mensonides +#include <boost/preprocessor/punctuation/comma.hpp> +#include <boost/preprocessor/detail/split.hpp> +#define BOOST_PARAMETER_IS_NULLARY(x) \ + BOOST_PP_SPLIT(1, BOOST_PARAMETER_IS_NULLARY_C x BOOST_PP_COMMA() 0) +/**/ +#include <boost/preprocessor/punctuation/paren.hpp> +#include <boost/preprocessor/tuple/eat.hpp> +#define BOOST_PARAMETER_IS_NULLARY_C() \ + ~, 1 BOOST_PP_RPAREN() \ + BOOST_PP_TUPLE_EAT(2) BOOST_PP_LPAREN() ~ +/**/ +#else +#include <boost/preprocessor/detail/is_nullary.hpp> +#define BOOST_PARAMETER_IS_NULLARY(x) BOOST_PP_IS_NULLARY(x) +/**/ +#endif + +#endif // include guard + diff --git a/boost/parameter/aux_/preprocessor/no_perfect_forwarding_begin.hpp b/boost/parameter/aux_/preprocessor/no_perfect_forwarding_begin.hpp new file mode 100644 index 0000000000..9ade7adcd1 --- /dev/null +++ b/boost/parameter/aux_/preprocessor/no_perfect_forwarding_begin.hpp @@ -0,0 +1,165 @@ +// Copyright David Abrahams, Daniel Wallin 2003. +// Copyright Cromwell D. Enage 2017. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// No include guard. This file is intended for multiple inclusion. + +#define BOOST_PARAMETER_right_angle(z, n, _) > +/**/ + +#define BOOST_PARAMETER_satisfies_end(z, n, false_t) ,false_t> +/**/ + +#include <boost/preprocessor/seq/elem.hpp> +#include <boost/preprocessor/cat.hpp> + +// Generates: +// +// make< +// parameter_spec##0, argument_type##0 +// , make< +// parameter_spec##1, argument_type##1 +// , ... boost::mpl::identity<boost::parameter::aux::empty_arg_list> +// ...> +// > +#define BOOST_PARAMETER_make_arg_list(z, n, names) \ + BOOST_PP_SEQ_ELEM(0, names)< \ + BOOST_PP_CAT(BOOST_PP_SEQ_ELEM(1, names), n), \ + BOOST_PP_CAT(BOOST_PP_SEQ_ELEM(2, names), n), +/**/ + +#include <boost/parameter/aux_/void.hpp> +#include <boost/mpl/identity.hpp> +#include <boost/preprocessor/repetition/repeat.hpp> + +#define BOOST_PARAMETER_build_arg_list(n, make, param_spec, arg_type) \ + BOOST_PP_REPEAT( \ + n, BOOST_PARAMETER_make_arg_list, (make)(param_spec)(arg_type) \ + ) \ + ::boost::mpl::identity< ::boost::parameter::void_> \ + BOOST_PP_REPEAT(n, BOOST_PARAMETER_right_angle, _) +/**/ + +#define BOOST_PARAMETER_make_deduced_list(z, n, names) \ + BOOST_PP_SEQ_ELEM(0, names)<BOOST_PP_CAT(BOOST_PP_SEQ_ELEM(1, names), n), +/**/ + +#define BOOST_PARAMETER_build_deduced_list(n, make, parameter_spec) \ + BOOST_PP_REPEAT( \ + n, BOOST_PARAMETER_make_deduced_list, (make)(parameter_spec) \ + ) \ + ::boost::mpl::identity< ::boost::parameter::void_> \ + BOOST_PP_REPEAT(n, BOOST_PARAMETER_right_angle, _) +/**/ + +#define BOOST_PARAMETER_forward_typedef(z, n, names) \ + typedef BOOST_PP_CAT(BOOST_PP_SEQ_ELEM(0, names), n) \ + BOOST_PP_CAT(BOOST_PP_SEQ_ELEM(1, names), n); +/**/ + +#define BOOST_PARAMETER_template_args(z, n, prefix) \ + typename BOOST_PP_CAT(prefix, n) = ::boost::parameter::void_ +/**/ + +#include <boost/mpl/pair.hpp> + +#if (0 < BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY) + +#include <boost/parameter/aux_/pack/item.hpp> +#include <boost/preprocessor/control/iif.hpp> + +#define BOOST_PARAMETER_make_arg_items_R(r, prefix, i, elem) \ + ::boost::parameter::aux::item<BOOST_PP_CAT(prefix, i), \ + BOOST_PP_CAT(A, i) BOOST_PP_IIF(elem, &, const&), +/**/ + +#include <boost/parameter/aux_/pack/make_arg_list.hpp> +#include <boost/parameter/aux_/pack/tag_keyword_arg.hpp> +#include <boost/preprocessor/seq/for_each_i.hpp> +#include <boost/preprocessor/seq/size.hpp> + +#define BOOST_PARAMETER_function_call_arg_list_R(r, seq) \ + ::boost::parameter::aux::make_arg_list< \ + BOOST_PP_SEQ_FOR_EACH_I_R( \ + r, BOOST_PARAMETER_make_arg_items_R, PS, seq \ + ) \ + ::boost::parameter::void_ \ + BOOST_PP_REPEAT( \ + BOOST_PP_SEQ_SIZE(seq), BOOST_PARAMETER_right_angle, _ \ + ) \ + , deduced_list \ + , ::boost::parameter::aux::tag_keyword_arg \ + > +/**/ + +#include <boost/preprocessor/arithmetic/sub.hpp> + +#define BOOST_PARAMETER_function_call_arg_pack_init(z, n, limit) \ + BOOST_PP_CAT(a, BOOST_PP_SUB(limit, n)) +/**/ + +#include <boost/parameter/aux_/preprocessor/binary_seq_to_args.hpp> +#include <boost/preprocessor/arithmetic/dec.hpp> +#include <boost/preprocessor/facilities/intercept.hpp> +#include <boost/preprocessor/repetition/enum.hpp> +#include <boost/preprocessor/repetition/enum_params.hpp> +#include <boost/preprocessor/repetition/enum_binary_params.hpp> +#include <boost/preprocessor/repetition/enum_trailing_params.hpp> +#include <boost/preprocessor/seq/seq.hpp> + +#define BOOST_PARAMETER_function_call_op_overload_R(r, seq) \ + template < \ + BOOST_PP_ENUM_PARAMS( \ + BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq)) \ + , typename A \ + ) \ + > \ + inline typename ::boost::mpl::first< \ + typename BOOST_PARAMETER_function_call_arg_list_R( \ + r, BOOST_PP_SEQ_TAIL(seq) \ + )::type \ + >::type \ + operator()( \ + BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARGS( \ + BOOST_PP_SEQ_TAIL(seq), (A)(a) \ + ) \ + ) const \ + { \ + typedef typename BOOST_PARAMETER_function_call_arg_list_R( \ + r, BOOST_PP_SEQ_TAIL(seq) \ + )::type result; \ + typedef typename ::boost::mpl::first<result>::type result_type; \ + typedef typename ::boost::mpl::second<result>::type error; \ + error(); \ + return result_type( \ + BOOST_PP_ENUM( \ + BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq)) \ + , BOOST_PARAMETER_function_call_arg_pack_init \ + , BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq))) \ + ) \ + BOOST_PP_ENUM_TRAILING_PARAMS( \ + BOOST_PP_SUB( \ + BOOST_PARAMETER_COMPOSE_MAX_ARITY \ + , BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq)) \ + ) \ + , ::boost::parameter::aux::void_reference() BOOST_PP_INTERCEPT \ + ) \ + ); \ + } +/**/ + +#endif // exponential overloads + +#include <boost/parameter/aux_/pack/satisfies.hpp> +#include <boost/mpl/eval_if.hpp> + +#define BOOST_PARAMETER_satisfies_begin(z, n, prefix) \ + ::boost::mpl::eval_if< \ + ::boost::parameter::aux::satisfies_requirements_of< \ + typename ::boost::mpl::first<ArgumentPackAndError>::type \ + , BOOST_PP_CAT(prefix, n) \ + >, +/**/ + diff --git a/boost/parameter/aux_/preprocessor/no_perfect_forwarding_end.hpp b/boost/parameter/aux_/preprocessor/no_perfect_forwarding_end.hpp new file mode 100644 index 0000000000..71cc596d2c --- /dev/null +++ b/boost/parameter/aux_/preprocessor/no_perfect_forwarding_end.hpp @@ -0,0 +1,24 @@ +// Copyright David Abrahams, Daniel Wallin 2003. +// Copyright Cromwell D. Enage 2017. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// No include guard. This file is intended for multiple inclusion. + +#undef BOOST_PARAMETER_satisfies_begin +#if (0 < BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY) +#undef BOOST_PARAMETER_function_call_op_overload_R +#undef BOOST_PARAMETER_function_call_arg_pack_init +#undef BOOST_PARAMETER_function_call_arg_list_R +#undef BOOST_PARAMETER_make_arg_items_R +#endif +#undef BOOST_PARAMETER_template_args +#undef BOOST_PARAMETER_forward_typedef +#undef BOOST_PARAMETER_build_deduced_list +#undef BOOST_PARAMETER_make_deduced_list +#undef BOOST_PARAMETER_build_arg_list +#undef BOOST_PARAMETER_make_arg_list +#undef BOOST_PARAMETER_satisfies_end +#undef BOOST_PARAMETER_right_angle + diff --git a/boost/parameter/aux_/preprocessor/nullptr.hpp b/boost/parameter/aux_/preprocessor/nullptr.hpp new file mode 100644 index 0000000000..85ab6cc2da --- /dev/null +++ b/boost/parameter/aux_/preprocessor/nullptr.hpp @@ -0,0 +1,18 @@ +// Copyright Cromwell D. Enage 2019. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_NULLPTR_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_NULLPTR_HPP + +#include <boost/config.hpp> + +#if defined(BOOST_NO_CXX11_NULLPTR) +#define BOOST_PARAMETER_AUX_PP_NULLPTR 0 +#else +#define BOOST_PARAMETER_AUX_PP_NULLPTR nullptr +#endif + +#endif // include guard + diff --git a/boost/parameter/aux_/preprocessor/overloads.hpp b/boost/parameter/aux_/preprocessor/overloads.hpp new file mode 100644 index 0000000000..4f2685616d --- /dev/null +++ b/boost/parameter/aux_/preprocessor/overloads.hpp @@ -0,0 +1,92 @@ +// Copyright David Abrahams, Daniel Wallin 2003. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// This file generates overloads in this format: +// +// template <typename A0, typename A1> +// typename ::boost::mpl::apply_wrap1< +// ::boost::parameter::aux::make_arg_list< +// PS0,A0 +// , ::boost::parameter::aux::make_arg_list< +// PS1,A1 +// , ::boost::mpl::identity< +// ::boost::parameter::aux::empty_arg_list +// > +// > +// > +// , unnamed_list +// >::type +// operator()(A0 const& a0, A1 const& a1) const +// { +// typedef typename ::boost::mpl::apply_wrap1< +// ::boost::parameter::aux::make_arg_list< +// PS0,A0 +// , ::boost::parameter::aux::make_arg_list< +// PS1,A1 +// , ::boost::mpl::identity< +// ::boost::parameter::aux::empty_arg_list +// > +// > +// > +// >::type arg_tuple; +// +// return arg_tuple( +// a0 +// , a1 +// , ::boost::parameter::aux::void_() +// ... +// ); +// } +// + +#if !defined(BOOST_PP_IS_ITERATING) +# error Boost.Parameters - do not include this file! +#endif + +#define N BOOST_PP_ITERATION() + +#define BOOST_PARAMETER_open_list(z, n, text) \ + ::boost::parameter::aux::item< \ + BOOST_PP_CAT(PS, n), BOOST_PP_CAT(A, n) + +#define BOOST_PARAMETER_close_list(z, n, text) > + +#define BOOST_PARAMETER_arg_list(n) \ + ::boost::parameter::aux::make_arg_list< \ + BOOST_PP_ENUM(N, BOOST_PARAMETER_open_list, _) \ + , ::boost::parameter::void_ \ + BOOST_PP_REPEAT(N, BOOST_PARAMETER_close_list, _) \ + , deduced_list \ + , ::boost::parameter::aux::tag_keyword_arg \ + > + +#define BOOST_PARAMETER_arg_pack_init(z, n, limit) \ + BOOST_PP_CAT(a, BOOST_PP_SUB(limit, n)) + +template <BOOST_PP_ENUM_PARAMS(N, typename A)> +typename ::boost::mpl::first< + typename BOOST_PARAMETER_arg_list(N)::type +>::type + operator()(BOOST_PP_ENUM_BINARY_PARAMS(N, A, & a)) const +{ + typedef typename BOOST_PARAMETER_arg_list(N)::type result; + typedef typename ::boost::mpl::first<result>::type result_type; + typedef typename ::boost::mpl::second<result>::type error; + error(); + + return result_type( + BOOST_PP_ENUM(N, BOOST_PARAMETER_arg_pack_init, BOOST_PP_DEC(N)) + BOOST_PP_ENUM_TRAILING_PARAMS( + BOOST_PP_SUB(BOOST_PARAMETER_COMPOSE_MAX_ARITY, N) + , ::boost::parameter::aux::void_reference() BOOST_PP_INTERCEPT + ) + ); +} + +#undef BOOST_PARAMETER_arg_list +#undef BOOST_PARAMETER_close_list +#undef BOOST_PARAMETER_open_list +#undef N + diff --git a/boost/parameter/aux_/preprocessor/qualifier.hpp b/boost/parameter/aux_/preprocessor/qualifier.hpp new file mode 100644 index 0000000000..b809503b44 --- /dev/null +++ b/boost/parameter/aux_/preprocessor/qualifier.hpp @@ -0,0 +1,88 @@ +// Copyright Daniel Wallin 2006. +// Copyright Cromwell D. Enage 2017. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_QUALIFIER_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_QUALIFIER_HPP + +#define BOOST_PARAMETER_QUALIFIER_EAT_in(x) +#define BOOST_PARAMETER_QUALIFIER_EAT_out(x) +#define BOOST_PARAMETER_QUALIFIER_EAT_in_out(x) +#define BOOST_PARAMETER_QUALIFIER_EAT_consume(x) +#define BOOST_PARAMETER_QUALIFIER_EAT_move_from(x) +#define BOOST_PARAMETER_QUALIFIER_EAT_forward(x) + +#define BOOST_PARAMETER_GET_QUALIFIER_in(x) in_reference +#define BOOST_PARAMETER_GET_QUALIFIER_out(x) out_reference +#define BOOST_PARAMETER_GET_QUALIFIER_in_out(x) in_out_reference +#define BOOST_PARAMETER_GET_QUALIFIER_consume(x) consume_reference +#define BOOST_PARAMETER_GET_QUALIFIER_move_from(x) move_from_reference +#define BOOST_PARAMETER_GET_QUALIFIER_forward(x) forward_reference + +#define BOOST_PARAMETER_STRIP_QUALIFIER_in(x) x +#define BOOST_PARAMETER_STRIP_QUALIFIER_out(x) x +#define BOOST_PARAMETER_STRIP_QUALIFIER_in_out(x) x +#define BOOST_PARAMETER_STRIP_QUALIFIER_consume(x) x +#define BOOST_PARAMETER_STRIP_QUALIFIER_move_from(x) x +#define BOOST_PARAMETER_STRIP_QUALIFIER_forward(x) x + +#include <boost/preprocessor/cat.hpp> + +#define BOOST_PARAMETER_GET_QUALIFIER_GET(x) \ + BOOST_PP_CAT(BOOST_PARAMETER_GET_QUALIFIER_, x) +/**/ + +#define BOOST_PARAMETER_GET_UNQUALIFIED(x) \ + BOOST_PP_CAT(BOOST_PARAMETER_STRIP_QUALIFIER_, x) +/**/ + +#include <boost/preprocessor/facilities/is_empty.hpp> + +// Expands to 1 if x is either "in(k)", "out(k)", "in_out(k)", "consume(k)", +// "move_from(k)", or "forward(k)"; expands to 0 otherwise. +#define BOOST_PARAMETER_IS_QUALIFIER(x) \ + BOOST_PP_IS_EMPTY(BOOST_PP_CAT(BOOST_PARAMETER_QUALIFIER_EAT_, x)) +/**/ + +#include <boost/preprocessor/control/iif.hpp> + +// Expands to the qualifier of x, +// where x is either a keyword qualifier or a keyword. +// +// k => forward_reference +// in(k) => in_reference +// out(k) => out_reference +// in_out(k) => in_out_reference +// forward(k) => forward_reference +// consume(k) => consume_reference +// move_from(k) => move_from_reference +#define BOOST_PARAMETER_GET_QUALIFIER(x) \ + BOOST_PP_IIF( \ + BOOST_PARAMETER_IS_QUALIFIER(x) \ + , BOOST_PARAMETER_GET_QUALIFIER_GET(x) \ + , forward_reference \ + ) +/**/ + +// Expands to the unqualified version of x, +// where x is either a keyword qualifier or a keyword. +// +// k => k +// in(k) => k +// out(k) => k +// in_out(k) => k +// forward(k) => k +// consume(k) => k +// move_from(k) => k +#define BOOST_PARAMETER_UNQUALIFIED(x) \ + BOOST_PP_IIF( \ + BOOST_PARAMETER_IS_QUALIFIER(x) \ + , BOOST_PARAMETER_GET_UNQUALIFIED(x) \ + , x \ + ) +/**/ + +#endif // include guard + diff --git a/boost/parameter/aux_/preprocessor/seq_enum.hpp b/boost/parameter/aux_/preprocessor/seq_enum.hpp new file mode 100644 index 0000000000..1455105d05 --- /dev/null +++ b/boost/parameter/aux_/preprocessor/seq_enum.hpp @@ -0,0 +1,26 @@ +// Copyright David Abrahams 2005. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_SEQ_ENUM_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_SEQ_ENUM_HPP + +#include <boost/preprocessor/seq/enum.hpp> +#include <boost/config.hpp> +#include <boost/config/workaround.hpp> + +#if BOOST_WORKAROUND(__MWERKS__, <= 0x3003) +#include <boost/preprocessor/seq/size.hpp> +// Temporary version of BOOST_PP_SEQ_ENUM +// until Paul M. integrates the workaround. +#define BOOST_PARAMETER_SEQ_ENUM_I(size, seq) \ + BOOST_PP_CAT(BOOST_PP_SEQ_ENUM_, size) seq +#define BOOST_PARAMETER_SEQ_ENUM(seq) \ + BOOST_PARAMETER_SEQ_ENUM_I(BOOST_PP_SEQ_SIZE(seq), seq) +#else +#define BOOST_PARAMETER_SEQ_ENUM(seq) BOOST_PP_SEQ_ENUM(seq) +#endif + +#endif // include guard + diff --git a/boost/parameter/aux_/preprocessor/seq_merge.hpp b/boost/parameter/aux_/preprocessor/seq_merge.hpp new file mode 100644 index 0000000000..065375388e --- /dev/null +++ b/boost/parameter/aux_/preprocessor/seq_merge.hpp @@ -0,0 +1,1807 @@ +// Copyright Cromwell D. Enage 2017. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_SEQ_MERGE_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_SEQ_MERGE_HPP + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_0(seq0, seq1) seq1 +/**/ + +#include <boost/preprocessor/seq/seq.hpp> +#include <boost/preprocessor/seq/push_front.hpp> + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_1(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT(seq1, BOOST_PP_SEQ_HEAD(seq0)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_2(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_1(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_3(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_2(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_4(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_3(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_5(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_4(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_6(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_5(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_7(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_6(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_8(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_7(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_9(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_8(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_10(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_9(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_11(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_10(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_12(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_11(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_13(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_12(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_14(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_13(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_15(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_14(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_16(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_15(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_17(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_16(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_18(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_17(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_19(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_18(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_20(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_19(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_21(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_20(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_22(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_21(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_23(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_22(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_24(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_23(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_25(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_24(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_26(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_25(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_27(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_26(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_28(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_27(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_29(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_28(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_30(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_29(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_31(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_30(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_32(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_31(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_33(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_32(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_34(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_33(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_35(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_34(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_36(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_35(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_37(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_36(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_38(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_37(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_39(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_38(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_40(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_39(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_41(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_40(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_42(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_41(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_43(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_42(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_44(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_43(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_45(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_44(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_46(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_45(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_47(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_46(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_48(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_47(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_49(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_48(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_50(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_49(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_51(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_50(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_52(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_51(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_53(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_52(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_54(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_53(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_55(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_54(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_56(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_55(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_57(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_56(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_58(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_57(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_59(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_58(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_60(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_59(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_61(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_60(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_62(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_61(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_63(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_62(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_64(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_63(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_65(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_64(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_66(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_65(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_67(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_66(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_68(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_67(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_69(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_68(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_70(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_69(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_71(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_70(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_72(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_71(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_73(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_72(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_74(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_73(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_75(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_74(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_76(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_75(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_77(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_76(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_78(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_77(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_79(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_78(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_80(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_79(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_81(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_80(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_82(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_81(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_83(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_82(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_84(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_83(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_85(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_84(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_86(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_85(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_87(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_86(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_88(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_87(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_89(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_88(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_90(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_89(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_91(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_90(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_92(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_91(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_93(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_92(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_94(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_93(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_95(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_94(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_96(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_95(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_97(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_96(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_98(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_97(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_99(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_98(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_100(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_99(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_101(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_100(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_102(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_101(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_103(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_102(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_104(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_103(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_105(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_104(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_106(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_105(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_107(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_106(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_108(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_107(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_109(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_108(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_110(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_109(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_111(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_110(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_112(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_111(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_113(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_112(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_114(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_113(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_115(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_114(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_116(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_115(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_117(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_116(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_118(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_117(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_119(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_118(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_120(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_119(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_121(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_120(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_122(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_121(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_123(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_122(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_124(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_123(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_125(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_124(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_126(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_125(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_127(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_126(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_128(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_127(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_129(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_128(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_130(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_129(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_131(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_130(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_132(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_131(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_133(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_132(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_134(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_133(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_135(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_134(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_136(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_135(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_137(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_136(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_138(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_137(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_139(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_138(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_140(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_139(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_141(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_140(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_142(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_141(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_143(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_142(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_144(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_143(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_145(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_144(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_146(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_145(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_147(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_146(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_148(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_147(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_149(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_148(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_150(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_149(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_151(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_150(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_152(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_151(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_153(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_152(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_154(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_153(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_155(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_154(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_156(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_155(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_157(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_156(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_158(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_157(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_159(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_158(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_160(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_159(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_161(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_160(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_162(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_161(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_163(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_162(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_164(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_163(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_165(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_164(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_166(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_165(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_167(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_166(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_168(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_167(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_169(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_168(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_170(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_169(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_171(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_170(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_172(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_171(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_173(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_172(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_174(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_173(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_175(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_174(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_176(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_175(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_177(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_176(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_178(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_177(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_179(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_178(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_180(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_179(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_181(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_180(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_182(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_181(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_183(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_182(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_184(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_183(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_185(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_184(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_186(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_185(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_187(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_186(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_188(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_187(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_189(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_188(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_190(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_189(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_191(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_190(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_192(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_191(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_193(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_192(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_194(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_193(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_195(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_194(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_196(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_195(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_197(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_196(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_198(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_197(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_199(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_198(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_200(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_199(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_201(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_200(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_202(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_201(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_203(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_202(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_204(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_203(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_205(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_204(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_206(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_205(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_207(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_206(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_208(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_207(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_209(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_208(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_210(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_209(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_211(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_210(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_212(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_211(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_213(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_212(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_214(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_213(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_215(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_214(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_216(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_215(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_217(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_216(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_218(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_217(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_219(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_218(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_220(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_219(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_221(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_220(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_222(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_221(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_223(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_222(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_224(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_223(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_225(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_224(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_226(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_225(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_227(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_226(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_228(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_227(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_229(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_228(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_230(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_229(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_231(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_230(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_232(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_231(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_233(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_232(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_234(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_233(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_235(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_234(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_236(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_235(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_237(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_236(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_238(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_237(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_239(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_238(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_240(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_239(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_241(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_240(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_242(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_241(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_243(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_242(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_244(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_243(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_245(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_244(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_246(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_245(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_247(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_246(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_248(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_247(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_249(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_248(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_250(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_249(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_251(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_250(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_252(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_251(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_253(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_252(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_254(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_253(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_255(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_254(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#include <boost/preprocessor/seq/size.hpp> +#include <boost/preprocessor/cat.hpp> + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE(seq0, seq1) \ + BOOST_PP_CAT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_, BOOST_PP_SEQ_SIZE(seq0) \ + )(seq0, seq1) +/**/ + +#endif // include guard + |