Compare commits

...

240 Commits

Author SHA1 Message Date
cd1b1bd039 Update ci.yml 2025-06-09 03:08:24 +03:00
849e8e91fc Merge pull request #56 from grafikrobot/modular
Add modular library level build file.
2025-05-02 19:15:21 +03:00
cd44c911d7 Move project global include to target local include. 2025-04-07 20:56:59 -05:00
b64ec9dbc7 Sync from upstream. 2025-04-04 21:39:18 -05:00
d899a718f1 Merge pull request #44 from marcoffee/fix-e129-e193
Fix references to parameters e129 and e193
2024-12-28 16:37:31 +02:00
918ff83c02 Update ci.yml 2024-12-28 16:09:52 +02:00
f9ada379f2 Apply Node20 workaround 2024-12-28 15:35:54 +02:00
910e57e789 Update ci.yml 2024-12-28 15:33:59 +02:00
0d2a85b3de Move inter-lib dependencies to a project variable and into the build targets. 2024-07-23 22:34:22 -05:00
c62822b6b5 Update copyright dates. 2024-07-20 22:52:03 -05:00
d5e87381fe Bump B2 require to 5.2 2024-06-14 11:33:56 -05:00
4cef4160fa Add requires-b2 check to top-level build file. 2024-05-05 09:00:01 -05:00
bf702eb1fd Merge branch 'boostorg:develop' into modular 2024-02-04 12:21:04 -06:00
c4ea7e40d3 Update test/CMakeLists.txt 2024-02-04 19:09:41 +02:00
fb8ebc8b42 Merge branch 'modular-location-independent' of https://github.com/grafikrobot/boostorg.preprocessor into feature/pr-57 2024-02-04 19:07:42 +02:00
3f3f1e070a Disable __VA_OPT__ for Clang 8 as well 2024-02-04 18:48:22 +02:00
ec8d33c4a0 Update ci.yml 2024-02-04 18:21:57 +02:00
a3d0db9305 Avoid references to root project. 2024-02-04 09:56:35 -06:00
a475d97e89 Add modular library level build file. 2024-02-04 09:47:19 -06:00
667e87b339 Change C test names to not conflict with the C++ ones 2022-08-16 20:59:52 +03:00
e919b652af Disable __VA_OPT__ on g++ 8/9 in c++2a mode, as vaopt.cpp fails 2022-08-16 19:09:04 +03:00
108a948323 Add .github/workflows 2022-08-16 11:31:06 +03:00
eacc296fa5 Merge branch 'master' into develop 2022-08-16 11:27:43 +03:00
f29be910a0 Fix references to parameters e129 and e193 2022-02-07 09:55:43 -03:00
d4e82d7d3f Merge branch 'develop' 2021-06-27 13:24:38 -04:00
69614bb1da Fix CMake tests in .travis.yml 2021-06-10 16:37:10 +03:00
24abbdc906 Update CMakeLists.txt 2021-06-10 02:09:03 +03:00
45178c3cc5 Merge branch 'master' into develop 2021-06-10 02:07:17 +03:00
93b896c932 Corrected cmake tests 2021-05-29 08:59:36 -04:00
229f654b59 Merge branch 'develop' 2021-02-15 16:07:36 -05:00
aa8f347df2 Treat nvcc compiling in cuda mode with _MSC_VER defined as if it is the VC++ default preprocessor as far as variadic macro support is concerned. 2021-02-11 23:38:30 -05:00
d8471d6526 Merge pull request #36 from sdarwin/drone
Drone config
2021-01-13 12:42:59 -05:00
bee33b0117 add drone config [ci skip] 2021-01-13 17:09:26 +00:00
b49e14231f Merge branch 'develop' 2020-12-29 16:26:32 -05:00
5289c50299 Update meta information 2020-12-28 10:15:43 -05:00
5e17804af2 Merge branch 'develop' 2020-10-25 06:16:15 -04:00
15dcb92ebf Revert "Chyange number of jobs to use $nproc"
This reverts commit 112673238a.
2020-10-25 06:15:04 -04:00
ae5e475169 Merge branch 'develop' 2020-10-24 20:35:07 -04:00
112673238a Chyange number of jobs to use $nproc 2020-10-24 20:33:54 -04:00
bff73def85 Remove preprocessor limits CI testing 2020-09-25 12:47:54 -04:00
5e2770334d Address model for msvc-10 and msvc-11 must be only 32-bit in appveyor.yml 2020-09-25 11:18:29 -04:00
e4186a6df1 Updated appveyor tests 2020-09-22 19:33:56 -04:00
4a274cbe86 Corrected msvc-14.0 setup 2020-09-22 13:24:12 -04:00
7bed5072e4 Update on config.hpp so we are not redefining a defined macro. 2020-09-22 00:30:33 -04:00
b3f95b899f More individual travis ci preprocessor limits tests. 2020-09-21 18:39:06 -04:00
8f937e431e More individual appveyor preprocessor limits tests. 2020-09-20 17:26:49 -04:00
879e876d45 Add address-model for limits build in Travis CI 2020-09-20 06:15:41 -04:00
1a2e813fcb Corrected Travis CI syntax 2020-09-20 05:38:29 -04:00
5a30bc472d Updated Appveyor setup. 2020-09-20 00:52:01 -04:00
d12d2d9a3a Updated .yml files 2020-09-19 23:02:30 -04:00
2ab48feed5 Corrected syntax 2020-09-19 19:46:58 -04:00
6ec9072f27 Update yml to handle Boost Build bug with explicit alias when not invoking b2 from the test directory. 2020-09-19 17:46:22 -04:00
cac5e3e2ef Rearrangement of links and better explanation of variadic macro support. 2020-09-19 09:14:26 -04:00
4b1d674a17 Updated title page specifying assumption of variadic macro support. 2020-09-19 07:59:43 -04:00
9fcd0a289a Upgrade docs to say that variadic macros must be supported by the compiler. 2020-09-19 02:24:44 -04:00
5fd12d32d4 Assume variadic macro support. 2020-09-17 18:25:36 -04:00
8288ce7575 Updated limitations docs. 2020-09-14 18:26:49 -04:00
ae836b12e4 Updated appveyor which protects b2 parameter by putting it within quote marks. 2020-09-14 15:43:10 -04:00
fe22f14954 Fixed check by not omitting the 0 check. 2020-09-04 17:38:08 -04:00
322e4266fb Reinstalled Intel on Windows fix fgor 17.0 on up. 2020-09-02 04:14:49 -04:00
f74e04f827 Fixed tests for non-strict compilers. 2020-09-02 01:37:00 -04:00
1ace1d3806 Fixed syntax error of a missing #endif 2020-09-01 21:08:13 -04:00
ed066d3c81 Further separation to strict and non-strict implementations in variadic implementations. 2020-09-01 19:31:41 -04:00
96e994a25a Further separation to strict and non-strict implementations in tuple implementations. 2020-09-01 19:19:23 -04:00
ac553f44fb Further separation to strict and non-strict implementations in seq implementations. 2020-09-01 16:03:28 -04:00
b93e99332b Further separation to strict and non-strict implementations in logical and repetition implementations. 2020-09-01 08:30:03 -04:00
001d109eab Further separation to strict and non-strict implementations in list implementations. 2020-09-01 02:50:29 -04:00
fedfdc2f32 Further separation to strict and non-strict implementations. 2020-09-01 00:35:19 -04:00
775f9eb24e Further separation to strict and non-strict implementations. 2020-08-31 21:08:44 -04:00
9b8138324f Changed separation to strict and non-strict implementations and include only the header files needed by either. 2020-08-31 16:51:00 -04:00
158fc13f01 Changed separation to strict and non-strict implementations and include only the header files needed by either. 2020-08-31 16:38:03 -04:00
721ef44e79 Revert arithmetic changes to original for msvc default preprocessor. 2020-08-31 10:55:17 -04:00
c1eb9292d7 Removed BOOST_PP_CAT workaround for Intel compiler on Windows for version 18.0 and above, as it was causing a failure in preprocessor tests. 2020-08-30 15:07:31 -04:00
d49db1ef09 Testing preprocessor limits in CI 2020-08-28 14:37:49 -04:00
92ac085edf Updated for new VC++ preprocessor, explicit tests, address model, and cxxstd. 2020-08-28 01:00:37 -04:00
fe67cda385 Create explicit tests for the limitation tests. 2020-08-28 00:59:47 -04:00
a1303d0763 Fixed erroneous extra #endif 2020-08-27 01:35:33 -04:00
5c83504677 Merge branch 'develop' into expand_number
# Conflicts:
#	include/boost/preprocessor/variadic/size.hpp
#	test/seq.cxx
#	test/variadic.cxx
2020-08-27 00:46:34 -04:00
b0a0bb281c Reinstituted a test. 2020-08-26 21:51:08 -04:00
661aa5c36e Cleanmer variadic size implementation. 2020-08-26 21:49:21 -04:00
a9ed92efbd Updates for empty variadic data. 2020-08-26 17:47:07 -04:00
f977ee0cd9 Updated the docs for limitations. 2020-08-23 20:12:06 -04:00
5d70c1fc7b Corrected limit. Added BOOST_PP_IS_STANDARD macro. Updated variadic tests. 2020-08-23 20:08:38 -04:00
1cf82f9928 Separate variadic and tuple limits so that variadic limits can be greater. 2020-08-17 21:22:13 -04:00
59cdb3e5db Updated limits and corrected deduce_r. 2020-08-16 11:20:25 -04:00
2c20e742a1 Merge branch 'develop' into master 2020-08-14 19:42:33 -04:00
4afae94309 Updated tests for clang 2020-08-14 19:38:55 -04:00
44a4e07994 Fix non-variadic tuple elem access. 2020-08-13 01:38:33 -04:00
3f43be5b55 Limited fold_left invocations. 2020-08-12 12:32:57 -04:00
d86d461aa7 Corrected seq's fold_left. 2020-08-11 22:13:23 -04:00
45565b6dc3 Updated tests for VC++ deficiencies. 2020-08-11 10:26:13 -04:00
1fe79acc20 Updated list tests 2020-08-10 21:11:57 -04:00
ff9d451901 Added selection tests. 2020-08-09 11:09:50 -04:00
e7b1f71c7e Updated tests and doc fix. 2020-08-08 11:30:37 -04:00
e44c47c9c3 Merge pull request #32 from jwakely/develop
Fix invalid XHTML document
2020-08-05 09:33:41 -04:00
0e1a2fecb1 Fix invalid XHTML document 2020-08-05 10:40:01 +01:00
c5fe11a649 Updated comparisons for 1024 maximum. 2020-08-01 17:57:02 -04:00
ee0c4135c3 Updated arithmetic tests for 1024 max. 2020-07-31 23:41:43 -04:00
2fb4b3de1b Iteration limit to 1024. 2020-07-28 20:36:00 -04:00
585fad5198 Fix dec limits. Allow 1024 in number and seq limits. 2020-07-28 01:39:40 -04:00
21f796567e Add 1024 limit for all related number functionality 2020-07-27 20:59:29 -04:00
905520aaf8 Added 1024 as maximum number 2020-07-27 07:54:05 -04:00
ea15d11d2f Updated iteration tests for 512 maximum 2020-07-25 12:43:39 -04:00
42a283d112 Repetition tests when exceeding the 256 minimum number of repetitions 2020-07-19 17:30:40 -04:00
aba61d6018 Rename to all lower case. 2020-07-14 17:52:41 -04:00
572f3f4d4a Fixed syntax error. 2020-07-14 17:39:48 -04:00
6272649c8f Allow macro to be passed only tuple, without the tuple size, when variadics are used. 2020-07-14 17:34:17 -04:00
efe8cb6242 Updated list tests 2020-07-12 19:06:21 -04:00
a03dd0419e Fix syntax error 2020-07-12 19:05:57 -04:00
9ba4469131 Fixed size implementation. 2020-07-11 13:51:08 -04:00
7e3516eb8f Revert "Revert to original size implementation now that 'while' has been expanded by one iteration."
This reverts commit 7e30c606b7.
2020-07-11 13:46:35 -04:00
7e30c606b7 Revert to original size implementation now that 'while' has been expanded by one iteration. 2020-07-11 11:05:21 -04:00
28a0c21651 Maximum for loop 2020-07-11 05:04:00 -04:00
0fbfe9c981 Increased while loops by one to encompass maximum numbers. 2020-07-10 23:06:27 -04:00
c8e005f696 Corrected fold_left to allow for maximum tests. 2020-07-10 12:19:38 -04:00
74f652c85f Updated size. 2020-07-08 22:04:07 -04:00
b9424eac02 Revert back to original reverse implementation 2020-07-07 20:23:58 -04:00
f10c669bab Add more large list tests 2020-07-07 19:13:37 -04:00
0fd6b84304 Add extra iteration for fold_left and fold_right to cover maximum operations. 2020-07-07 19:13:05 -04:00
db21240060 Split reverse for seq seize greater than 256 2020-07-05 13:13:06 -04:00
14a263bf9d Updated to not do duplicate dec 2020-07-05 10:57:18 -04:00
5c7ae49828 Updated doc doe BOOST_PP_OVERLOAD. 2020-07-03 14:18:44 -04:00
bb9d4273d4 Updated seq tests 2020-07-02 18:39:04 -04:00
110ddaca75 Updated tests. 2020-07-02 15:07:17 -04:00
5e74d9f12e Added config.hpp back. 2020-07-02 12:13:22 -04:00
1b5c17f75b Updated header includes 2020-07-02 11:36:36 -04:00
15d0d66a75 Updated limit implementation. 2020-07-02 11:24:15 -04:00
e231fe7ad9 Updated docs for the the fact that in C++20 mode when __VA_OPT__ is supported variadic data passed some of the variadic macros can be empty. 2020-06-30 14:50:47 -04:00
a037024cec Updated Travis CI clang 9 and 10 configurations 2020-06-30 13:32:30 -04:00
57c160f921 Updated travis CI tests 2020-06-30 10:55:50 -04:00
3ac4c915a3 In C++20 variadic data can be empty. This means that BOOST_PP_VARIADIC_SIZE now returns 0 for empty data instead of 1, and that conversions to and from empty variadic data and lists or arrays, which can be empty, work properly. 2020-06-29 21:57:23 -04:00
47b430e3d5 Updated limits need undefs. Break reverse into two eequal parts. Updated seq tests. 2020-06-28 12:52:41 -04:00
59048974ba When the tuple limit is not 256, use previous implementation 2020-06-13 13:19:21 -04:00
62da4cc84b Updated tests. 2020-06-13 04:01:22 -04:00
b72dcd7958 Fixed array functionality for large arrays. 2020-06-11 20:44:39 -04:00
cf34b5c21b Simplified functionality 2020-06-11 08:23:22 -04:00
1347313cae Added copyright 2020-06-11 08:22:46 -04:00
31704b522a Added copyrights 2020-06-11 08:22:00 -04:00
f16f7721b5 Corrected syntax errors 2020-06-11 08:20:53 -04:00
43f02f9405 Simplified multiplication 2020-06-10 11:05:43 -04:00
e8bbb16f57 Use detail check for number 1 rather than empty implementation. 2020-06-10 10:44:35 -04:00
25aaea0136 Updated arithmetic. 2020-06-10 09:59:30 -04:00
13c9669410 Updated arithmetic implementations to deal with corner cases whichy run out of WHILE loops. 2020-06-09 20:54:12 -04:00
d41d1dda97 Updated multiplication and subtraction to check for maximum/minimum numbers. 2020-06-07 15:49:53 -04:00
c07bb185c1 Updated BOOST_PP_ADD implementation checking for the maximum number. 2020-06-07 05:36:32 -04:00
43caf4d41e Added macros for testing miniumum (0) andf maximum numbers. 2020-06-06 16:12:56 -04:00
a6c5cd5bcf Update test and jamfile 2020-06-04 21:52:46 -04:00
05b3defe2f Update arithmetic tests 2020-05-29 21:35:40 -04:00
d49211a963 Only allow limits to be used by strictly conforming compilers. 2020-05-29 21:35:08 -04:00
7541c351ce Update variadics test. 2020-05-29 13:12:53 -04:00
b68a2409ad Fix syntax errors. 2020-05-29 13:11:46 -04:00
0999dfe1d5 Update default list size from 255 to 256. 2020-05-29 13:11:04 -04:00
a7560df684 Adding limits for repetition and seq. 2020-05-19 15:35:54 -04:00
efa576203b Testing of numbers up to 512 2020-05-09 17:03:48 -04:00
fd3b57b15a Added arithmetic testing for numbers up to 512. Corrected seq macro which does not expect a number above 256. 2020-05-04 18:44:20 -04:00
c859da1fc9 Fixed some syntax errors and updated a test to asccount for numbers being more than 256. 2020-05-04 00:34:09 -04:00
efea46b2fb Allow iteration limits to be configured 2020-05-03 22:31:58 -04:00
b95d91ee71 Use a separate BOOST_PP_LIMIT_VARIADIC for variadic elements 2020-05-03 14:35:41 -04:00
9bf0043260 Updates for tuple elements of more than 64 elements 2020-05-02 21:59:30 -04:00
533d636ece Implement tuple limits for TUPLE functionality. Add updated copyright for changed files. 2020-05-01 14:38:32 -04:00
0dcaaac66f Changed directory structure so that all limits implementations are in their own relative "limits" subdirectory. 2020-04-30 10:24:33 -04:00
3b6102cd03 Added ability to change the number of tuple elements. A number of small fixes. 2020-04-30 09:06:06 -04:00
82addd1b28 Support for expanded numbers up to 512, as well as expanded while iterationms up to 512. 2020-04-29 06:38:10 -04:00
ffb26db146 Not going to test msvc-9,0 anymore. It is just too old and I can not test it locally. 2020-04-26 09:38:05 -04:00
e4fb5f4866 Merge branch 'develop' 2020-03-01 00:18:20 -05:00
9cf66925d4 Latest Borland with clang can support variadic macros. Updated iso test to be more correct choosing compiler level. 2020-02-18 02:44:51 -05:00
e4ce0f06f5 Merge branch 'develop' 2020-02-01 23:12:13 -05:00
98f6c75e1e Make the quick.cpp test 'explicit'. 2020-01-06 02:34:42 -05:00
f99ed9921a Merge pull request #28 from boostorg/feature/add-cmake-tests
Add CMake install support, tests
2020-01-05 20:20:29 -05:00
a378d239da Disable the Appveyor cmake_test configuration on 2015/2017 as it's too slow; only bootstrap b2 in the boost_build_test configuration 2020-01-05 07:19:59 +02:00
0332a793f5 Fix Appveyor branch handling 2020-01-05 06:48:21 +02:00
6c350c6fc3 Update appveyor.yml 2020-01-05 06:46:08 +02:00
728c71ba75 Enable C in test/CMakeLists.txt; add int main() {} to quick.cpp 2020-01-05 05:07:08 +02:00
1ab9385a91 Add CMake install support, tests 2020-01-05 04:32:16 +02:00
688c3f2ee6 Turn off variadic macro support by default for nvcc only when compiling CUDA files. 2019-12-14 13:20:45 -05:00
bd0db5ce8b Changed __CUDACC__ to __NVCC__ as other compilers do define __CUDACC__ when compiling CUDA files. 2019-12-14 12:45:02 -05:00
da60e76913 Added 'explicit' for test_iso. 2019-11-13 20:45:02 -05:00
661dd91603 Added explicit test with the alias 'test_iso' to run tests for macro expansion for the various C++ standards. 2019-11-13 20:38:10 -05:00
ffb27a1d56 Merge branch 'develop' 2019-11-12 15:01:45 -05:00
a6404a8fb2 Fixed __VA_OPT__ functionality for vc++ in c20 mode. 2019-11-12 14:57:09 -05:00
732d00341f For the default VC++ preprocessor turn off __VA_OPT__ support in true c20 mode ( /Zc:__cplusplus ) as it can not handle it. 2019-11-12 10:31:24 -05:00
e7256313c4 Merge branch 'develop' 2019-11-03 23:32:49 -05:00
b3036f1a63 Expanded emptiness explanation with the addition of the BOOST_PP_VA_OPT macro. 2019-11-02 23:58:29 -04:00
de49676452 Added docs for the BOOST_PP_VA_OPT macro. 2019-11-02 18:59:55 -04:00
4f4f04c56b Added va_opt.hpp to facilities header file. 2019-11-01 15:51:34 -04:00
c5e90f23b7 Updated check_empty variadic macro notation. 2019-11-01 15:34:08 -04:00
776037ae56 Corrected implementation and testing for BOOST_PP_VA_OPT 2019-10-31 06:07:10 -04:00
a9827c8fc8 Updated docs __VA_OPT__ support. 2019-10-30 14:32:45 -04:00
6db241a78d Merge remote-tracking branch 'remotes/origin/develop' 2019-10-20 17:03:23 -04:00
4fe7807f79 Add BOOST_PP_VA_OPT implementation 2019-10-20 17:00:51 -04:00
80107ea60a Changed opt to has_opt in header file and HTML 2019-10-19 10:51:40 -04:00
1473215dc7 Changed name of macro from BOOST_PP_VARIADIC_OPT to BOOST_PP_VARIADIC_HAS_OPT 2019-10-19 05:49:13 -04:00
291f92696d Merge branch 'develop' 2019-10-09 12:48:38 -04:00
771edacbff Completed the emptiness topic. 2019-10-08 15:50:08 -04:00
ac99242b71 Add a topic on "emptiness" 2019-10-08 09:43:18 -04:00
bda6ad9148 Updated docs 2019-10-06 22:20:19 -04:00
88a0365f4d Added the BOOST_PP_CHECK_EMPTY macro and documentation. 2019-10-06 22:06:38 -04:00
6af29d8b77 Merge branch 'develop' 2019-10-04 22:51:14 -04:00
af70b2872e Updated for compiling a CUDA file with clang. 2019-10-02 18:52:09 -04:00
b7b1425c7f Remove duplicate printing of a macro in this test. 2019-09-28 11:25:09 -04:00
54669af127 Fixed macro testing for __VA_OPT__ support. 2019-09-27 22:15:18 -04:00
e439b2555e Updated name and parameters for clang cuda test. 2019-09-27 13:44:19 -04:00
4cce94a84e Segregate C20 macros code from other macros for BOOST_PP_IS_EMPTY 2019-09-27 09:44:15 -04:00
2f9be1086a Less wasteful inclusion. 2019-09-26 16:07:03 -04:00
684e9991ec Only include macro if allowable. 2019-09-26 15:05:17 -04:00
a42f374b97 Updated example for using the BOOST_PP_VARIADIC_OPT macro. 2019-09-26 01:19:31 -04:00
0cdd09e6e1 Change to a less wasteful use of BOOST_PP_VARIADIC_OPT in BOOST_PP_IS_EMPTY code. 2019-09-26 00:43:46 -04:00
22deb165b6 Documentation for variadic opt functionality. 2019-09-25 15:43:07 -04:00
e476f10f52 Added OPT macro to determine whether C++20's __VA_OPT__ is supported or not. Updated the undocumented variadic IS_EMPTY to use the functionality of __VA_OPT__ if it exists to provide perfect functionality for testing for emptiness. 2019-09-25 06:29:04 -04:00
c436de6142 Adjusted the configuration so that compiling a cuda source file ( .cu ) using clang does not set BOOST_PP_VARIADICS to 0. An 'explicit' test was also added for this situation. 2019-09-14 10:27:14 -04:00
5756fb08ad Fixed inspect report problems: tabs and lack of copyright notices, and a few other small html file errors. 2019-08-27 01:29:21 -04:00
9b3e6a2cd6 Updated for b2 cmake support. 2018-12-19 22:09:23 -05:00
d135cad759 Merge branch 'develop' 2018-10-25 19:41:15 -04:00
8d26689387 Merge branch 'develop' of https://github.com/boostorg/preprocessor into develop 2018-10-25 16:58:28 -04:00
f78f0a1d25 Removing any forcing of C++ levels. 2018-10-25 16:57:55 -04:00
87fd89a7db Merge pull request #20 from Mike-Devel/min_cmake
[CMake] Generate cmake target that other libraries can use
2018-10-23 09:49:20 -04:00
adf2746626 Add support for vc++ /experimental:preprocessor mode. 2018-10-20 14:02:20 -04:00
fe70754559 Include wchar.h in order to test wide character stringize under C. 2018-10-19 16:57:17 -04:00
45588469f3 Only test wide character stringize in c++. 2018-10-19 16:41:43 -04:00
344ce6abf9 [CMake/CI] Use config_info.cpp for cmake self test 2018-10-17 12:13:45 +02:00
31653b34c9 [CMake/CI] Some cleanup 2018-10-17 12:12:57 +02:00
a4e304ca87 [CMake/CI] Add cmake self test to appveyor 2018-10-17 11:33:21 +02:00
0e335df79e Test for stringize macro and use of variadic in stringize macro. 2018-10-16 16:37:10 -04:00
ee5ed2510d [CMake] Add self-test for cmake file to travis 2018-10-16 19:58:45 +02:00
dd44e1eea5 [CMake] Add minimal cmake file
Generate cmake target that can be used by other libraries
to express their dependency on this library and retrieve
any configuration information such as the include directory.
2018-10-09 14:52:17 +02:00
b5c081bf7a Variadic macro support for the PGI compiler when EDG is being used with it. 2018-09-23 09:12:59 -04:00
347f48afae Back out previous CUDA change to turn on variadic macro support for all situations when compiling a CUDA file. 2018-09-10 17:42:32 -04:00
49a72ac4f2 Corrected sentence by removing extra "the". 2018-08-23 19:20:04 -04:00
56090c56b5 Merge branch 'develop' 2018-02-20 09:13:57 -05:00
00b2f44624 Allow the IBM compiler to default to the level of C++/C compliance to determine default variadic macro support 2018-02-18 09:47:44 -05:00
a329a67b47 NVidia compiler supports variadic macros. 2018-02-14 22:01:04 -05:00
34af3a925c Merge pull request #11 from danieljames/feature/fix-links
Fix some links
2018-01-11 13:02:34 -05:00
ad22f9686e Fix some links 2018-01-11 14:20:16 +00:00
39175c471f Merge branch 'develop' 2017-10-30 11:32:10 -04:00
aa9ee3ae3f Removed --depth 1 2017-10-29 21:31:25 -04:00
50ffeeee8b Merge branch 'develop' 2017-10-27 22:31:37 -04:00
f54e270433 Better appveyor designation for tests. 2017-10-09 11:58:08 -04:00
08ec2abb2e Updated appveyor file for correct toolsets. 2017-10-09 11:39:03 -04:00
c4b1ce10bd Add VS2017 worker image. 2017-10-09 11:23:30 -04:00
1ecc2e2ec9 Added Appveyor file. 2017-10-09 08:09:05 -04:00
373 changed files with 114855 additions and 2493 deletions

52
.drone.star Normal file
View File

@ -0,0 +1,52 @@
# Use, modification, and distribution are
# subject to the Boost Software License, Version 1.0. (See accompanying
# file LICENSE.txt)
#
# Copyright Rene Rivera 2020.
# For Drone CI we use the Starlark scripting language to reduce duplication.
# As the yaml syntax for Drone CI is rather limited.
#
#
globalenv={}
linuxglobalimage="cppalliance/droneubuntu1604:1"
windowsglobalimage="cppalliance/dronevs2019"
def main(ctx):
return [
linux_cxx("TOOLSET=gcc COMPILER=g++ CXXSTD=03,11 Job 0", "g++", packages="", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'TOOLSET': 'gcc', 'COMPILER': 'g++', 'CXXSTD': '03,11', 'DRONE_JOB_UUID': 'b6589fc6ab'}, globalenv=globalenv),
linux_cxx("TOOLSET=gcc COMPILER=g++-4.4 CXXSTD=98 Job 1", "g++", packages="g++-4.4", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-4.4', 'CXXSTD': '98', 'DRONE_JOB_UUID': '356a192b79'}, globalenv=globalenv),
linux_cxx("TOOLSET=gcc COMPILER=g++-4.6 CXXSTD=03,0x Job 2", "g++", packages="g++-4.6", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-4.6', 'CXXSTD': '03,0x', 'DRONE_JOB_UUID': 'da4b9237ba'}, globalenv=globalenv),
linux_cxx("TOOLSET=gcc COMPILER=g++-4.7 CXXSTD=03,11 Job 3", "g++-4.7", packages="g++-4.7", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-4.7', 'CXXSTD': '03,11', 'DRONE_JOB_UUID': '77de68daec'}, globalenv=globalenv),
linux_cxx("TOOLSET=gcc COMPILER=g++-4.8 CXXSTD=03,11 Job 4", "g++-4.8", packages="g++-4.8", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-4.8', 'CXXSTD': '03,11', 'DRONE_JOB_UUID': '1b64538924'}, globalenv=globalenv),
linux_cxx("TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=03,11 Job 5", "g++-4.9", packages="g++-4.9", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-4.9', 'CXXSTD': '03,11', 'DRONE_JOB_UUID': 'ac3478d69a'}, globalenv=globalenv),
linux_cxx("TOOLSET=gcc COMPILER=g++-5 CXXSTD=03,11,14,1z Job 6", "g++-5", packages="g++-5", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-5', 'CXXSTD': '03,11,14,1z', 'DRONE_JOB_UUID': 'c1dfd96eea'}, globalenv=globalenv),
linux_cxx("TOOLSET=gcc COMPILER=g++-6 CXXSTD=03,11,14,1z Job 7", "g++-6", packages="g++-6", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-6', 'CXXSTD': '03,11,14,1z', 'DRONE_JOB_UUID': '902ba3cda1'}, globalenv=globalenv),
linux_cxx("TOOLSET=gcc COMPILER=g++-7 CXXSTD=03,11,14,17 Job 8", "g++-7", packages="g++-7", buildtype="boost", buildscript="drone", image="cppalliance/droneubuntu1404:1", environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-7', 'CXXSTD': '03,11,14,17', 'DRONE_JOB_UUID': 'fe5dbbcea5'}, globalenv=globalenv),
linux_cxx("TOOLSET=gcc COMPILER=g++-8 CXXSTD=03,11,14,17 Job 9", "g++-8", packages="g++-8", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-8', 'CXXSTD': '03,11,14,17', 'DRONE_JOB_UUID': '0ade7c2cf9'}, globalenv=globalenv),
linux_cxx("TOOLSET=gcc COMPILER=g++-9 CXXSTD=03,11,14,17 Job 10", "g++-9", packages="g++-9", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-9', 'CXXSTD': '03,11,14,17', 'DRONE_JOB_UUID': 'b1d5781111'}, globalenv=globalenv),
linux_cxx("TOOLSET=gcc COMPILER=g++-10 CXXSTD=03,11,14,1 Job 11", "g++-10", packages="g++-10", buildtype="boost", buildscript="drone", image="cppalliance/droneubuntu1804:1", environment={'TOOLSET': 'gcc', 'COMPILER': 'g++-10', 'CXXSTD': '03,11,14,17,2a', 'DRONE_JOB_UUID': '17ba079149'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++ CXXSTD=03,11 Job 12", "clang++", packages="", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'TOOLSET': 'clang', 'COMPILER': 'clang++', 'CXXSTD': '03,11', 'DRONE_JOB_UUID': '7b52009b64'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=/usr/bin/clang++ CXXST Job 13", "/usr/bin/clang++", packages="clang-3.3", buildtype="boost", buildscript="drone", image="cppalliance/droneubuntu1404:1", environment={'TOOLSET': 'clang', 'COMPILER': '/usr/bin/clang++', 'CXXSTD': '03,11', 'DRONE_JOB_UUID': 'bd307a3ec3'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=/usr/bin/clang++ CXXST Job 14", "/usr/bin/clang++", packages="clang-3.4", buildtype="boost", buildscript="drone", image="cppalliance/droneubuntu1404:1", environment={'TOOLSET': 'clang', 'COMPILER': '/usr/bin/clang++', 'CXXSTD': '03,11', 'DRONE_JOB_UUID': 'fa35e19212'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++-3.5 CXXSTD=03, Job 15", "clang++", packages="clang-3.5", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'TOOLSET': 'clang', 'COMPILER': 'clang++-3.5', 'CXXSTD': '03,11,14,1z', 'DRONE_JOB_UUID': 'f1abd67035'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++-3.6 CXXSTD=03, Job 16", "clang++", packages="clang-3.6", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'TOOLSET': 'clang', 'COMPILER': 'clang++-3.6', 'CXXSTD': '03,11,14,1z', 'DRONE_JOB_UUID': '1574bddb75'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=03, Job 17", "clang++", packages="clang-3.7", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'TOOLSET': 'clang', 'COMPILER': 'clang++-3.7', 'CXXSTD': '03,11,14,1z', 'DRONE_JOB_UUID': '0716d9708d'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=03, Job 18", "clang++-3.8", packages="clang-3.8", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'TOOLSET': 'clang', 'COMPILER': 'clang++-3.8', 'CXXSTD': '03,11,14,1z', 'DRONE_JOB_UUID': '9e6a55b6b4'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=03, Job 19", "clang++-3.9", packages="clang-3.9", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'TOOLSET': 'clang', 'COMPILER': 'clang++-3.9', 'CXXSTD': '03,11,14,1z', 'DRONE_JOB_UUID': 'b3f0c7f6bb'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++-4.0 CXXSTD=03, Job 20", "clang++-4.0", packages="clang-4.0", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'TOOLSET': 'clang', 'COMPILER': 'clang++-4.0', 'CXXSTD': '03,11,14,1z', 'DRONE_JOB_UUID': '91032ad7bb'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++-5.0 CXXSTD=03, Job 21", "clang++-5.0", packages="clang-5.0", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'TOOLSET': 'clang', 'COMPILER': 'clang++-5.0', 'CXXSTD': '03,11,14,1z', 'DRONE_JOB_UUID': '472b07b9fc'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++-6.0 CXXSTD=03, Job 22", "clang++-6.0", packages="clang-6.0", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'TOOLSET': 'clang', 'COMPILER': 'clang++-6.0', 'CXXSTD': '03,11,14,17', 'DRONE_JOB_UUID': '12c6fc06c9'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++-7 CXXSTD=03,11 Job 23", "clang++-7", packages="clang-7", llvm_os="xenial", llvm_ver="7", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'TOOLSET': 'clang', 'COMPILER': 'clang++-7', 'CXXSTD': '03,11,14,17', 'DRONE_JOB_UUID': 'd435a6cdd7'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++-8 CXXSTD=03,11 Job 24", "clang++-8", packages="clang-8", llvm_os="xenial", llvm_ver="8", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'TOOLSET': 'clang', 'COMPILER': 'clang++-8', 'CXXSTD': '03,11,14,17', 'DRONE_JOB_UUID': '4d134bc072'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++-9 CXXSTD=03,11 Job 25", "clang++-9", packages="clang-9", llvm_os="xenial", llvm_ver="9", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'TOOLSET': 'clang', 'COMPILER': 'clang++-9', 'CXXSTD': '03,11,14,17,2a', 'DRONE_JOB_UUID': 'f6e1126ced'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++-10 CXXSTD=03,1 Job 26", "clang++-10", packages="clang-10", llvm_os="xenial", llvm_ver="10", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'TOOLSET': 'clang', 'COMPILER': 'clang++-10', 'CXXSTD': '03,11,14,17,2a', 'DRONE_JOB_UUID': '887309d048'}, globalenv=globalenv),
linux_cxx("TOOLSET=clang COMPILER=clang++-libc++ CXXSTD= Job 27", "clang++-libc++", packages="libc++-dev", buildtype="boost", buildscript="drone", image="cppalliance/droneubuntu1404:1", environment={'TOOLSET': 'clang', 'COMPILER': 'clang++-libc++', 'CXXSTD': '03,11,14,1z', 'DRONE_JOB_UUID': 'bc33ea4e26'}, globalenv=globalenv),
osx_cxx("TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,1 Job 28", "clang++", packages="", buildtype="boost", buildscript="drone", environment={'TOOLSET': 'clang', 'COMPILER': 'clang++', 'CXXSTD': '03,11,14,1z', 'DRONE_JOB_UUID': '0a57cb53ba'}, globalenv=globalenv),
linux_cxx("CMAKE_TEST=1 Job 29", "g++", packages="", buildtype="cmake-test-script", buildscript="drone", image=linuxglobalimage, environment={'CMAKE_TEST': '1', 'DRONE_JOB_UUID': '7719a1c782'}, globalenv=globalenv),
linux_cxx("CMAKE_SUBDIR_TEST=1 Job 30", "g++", packages="", buildtype="cmake-subdir-script", buildscript="drone", image=linuxglobalimage, environment={'CMAKE_SUBDIR_TEST': '1', 'DRONE_JOB_UUID': '22d200f867'}, globalenv=globalenv),
linux_cxx("CMAKE_INSTALL_TEST=1 Job 31", "g++", packages="", buildtype="cmake-install-script", buildscript="drone", image=linuxglobalimage, environment={'CMAKE_INSTALL_TEST': '1', 'DRONE_JOB_UUID': '632667547e'}, globalenv=globalenv),
]
# from https://github.com/boostorg/boost-ci
load("@boost_ci//ci/drone/:functions.star", "linux_cxx","windows_cxx","osx_cxx","freebsd_cxx")

88
.drone/drone.sh Executable file
View File

@ -0,0 +1,88 @@
#!/bin/bash
set -ex
export TRAVIS_BUILD_DIR=$(pwd)
export DRONE_BUILD_DIR=$(pwd)
export TRAVIS_BRANCH=$DRONE_BRANCH
export VCS_COMMIT_ID=$DRONE_COMMIT
export GIT_COMMIT=$DRONE_COMMIT
export REPO_NAME=$DRONE_REPO
export PATH=~/.local/bin:/usr/local/bin:$PATH
if [ "$DRONE_JOB_BUILDTYPE" == "boost" ]; then
echo '==================================> INSTALL'
BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true
cd ..
git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
git submodule update --init tools/boostdep
cp -r $TRAVIS_BUILD_DIR/* libs/preprocessor
python tools/boostdep/depinst/depinst.py preprocessor
./bootstrap.sh
./b2 headers
echo '==================================> SCRIPT'
echo "using $TOOLSET : : $COMPILER ;" > ~/user-config.jam
./b2 libs/preprocessor/test -j 3 toolset=$TOOLSET cxxstd=$CXXSTD $ADDRMD
elif [ "$DRONE_JOB_BUILDTYPE" == "cmake-install-script" ]; then
echo '==================================> INSTALL'
BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true
cd ..
git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
git submodule update --init tools/boostdep
cp -r $TRAVIS_BUILD_DIR/* libs/preprocessor
python tools/boostdep/depinst/depinst.py preprocessor
./bootstrap.sh
./b2 headers
echo '==================================> SCRIPT'
mkdir __build__ && cd __build__
cmake -DBOOST_ENABLE_CMAKE=1 -DBoost_VERBOSE=1 -DBOOST_INCLUDE_LIBRARIES=preprocessor -DCMAKE_INSTALL_PREFIX=~/.local ..
cmake --build . --target install
cd ../libs/preprocessor/test/cmake_install_test && mkdir __build__ && cd __build__
cmake -DCMAKE_INSTALL_PREFIX=~/.local ..
cmake --build .
cmake --build . --target check
elif [ "$DRONE_JOB_BUILDTYPE" == "cmake-subdir-script" ]; then
echo '==================================> INSTALL'
true
echo '==================================> SCRIPT'
cd test/cmake_subdir_test && mkdir __build__ && cd __build__
cmake ..
cmake --build .
cmake --build . --target check
elif [ "$DRONE_JOB_BUILDTYPE" == "cmake-test-script" ]; then
echo '==================================> INSTALL'
BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true
cd ..
git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
git submodule update --init tools/boostdep
cp -r $TRAVIS_BUILD_DIR/* libs/preprocessor
python tools/boostdep/depinst/depinst.py preprocessor
./bootstrap.sh
./b2 headers
echo '==================================> SCRIPT'
mkdir __build__ && cd __build__
cmake -DBOOST_ENABLE_CMAKE=1 -DBoost_VERBOSE=1 -DBOOST_INCLUDE_LIBRARIES=preprocessor ..
ctest --output-on-failure -R boost_preprocessor
fi

643
.github/workflows/ci.yml vendored Normal file
View File

@ -0,0 +1,643 @@
name: CI
on:
pull_request:
push:
branches:
- master
- develop
- feature/**
env:
UBSAN_OPTIONS: print_stacktrace=1
jobs:
posix:
strategy:
fail-fast: false
matrix:
include:
- toolset: gcc-4.8
cxxstd: "03,11"
container: ubuntu:18.04
os: ubuntu-latest
install: g++-4.8
- toolset: gcc-5
cxxstd: "03,11,14,1z"
container: ubuntu:18.04
os: ubuntu-latest
install: g++-5
- toolset: gcc-6
cxxstd: "03,11,14,1z"
container: ubuntu:18.04
os: ubuntu-latest
install: g++-6
- toolset: gcc-7
cxxstd: "03,11,14,17"
container: ubuntu:18.04
os: ubuntu-latest
install: g++-7
- toolset: gcc-8
cxxstd: "03,11,14,17,2a"
container: ubuntu:18.04
os: ubuntu-latest
install: g++-8
- toolset: gcc-9
cxxstd: "03,11,14,17,2a"
container: ubuntu:20.04
os: ubuntu-latest
- toolset: gcc-10
cxxstd: "03,11,14,17,2a"
container: ubuntu:20.04
os: ubuntu-latest
install: g++-10
- toolset: gcc-11
cxxstd: "03,11,14,17,2a"
os: ubuntu-22.04
install: g++-11
- toolset: gcc-12
cxxstd: "03,11,14,17,20,2b"
os: ubuntu-22.04
install: g++-12
- toolset: gcc-13
cxxstd: "03,11,14,17,20,2b"
container: ubuntu:24.04
os: ubuntu-latest
install: g++-13
- toolset: gcc-14
cxxstd: "03,11,14,17,20,2b"
container: ubuntu:24.04
os: ubuntu-latest
install: g++-14
- toolset: clang
compiler: clang++-3.9
cxxstd: "03,11,14"
container: ubuntu:18.04
os: ubuntu-latest
install: clang-3.9
- toolset: clang
compiler: clang++-4.0
cxxstd: "03,11,14"
container: ubuntu:18.04
os: ubuntu-latest
install: clang-4.0
- toolset: clang
compiler: clang++-5.0
cxxstd: "03,11,14,1z"
container: ubuntu:18.04
os: ubuntu-latest
install: clang-5.0
- toolset: clang
compiler: clang++-6.0
cxxstd: "03,11,14,17"
container: ubuntu:20.04
os: ubuntu-latest
install: clang-6.0
- toolset: clang
compiler: clang++-7
cxxstd: "03,11,14,17"
container: ubuntu:20.04
os: ubuntu-latest
install: clang-7
- toolset: clang
compiler: clang++-8
cxxstd: "03,11,14,17,2a"
container: ubuntu:20.04
os: ubuntu-latest
install: clang-8
- toolset: clang
compiler: clang++-9
cxxstd: "03,11,14,17,2a"
container: ubuntu:20.04
os: ubuntu-latest
install: clang-9
- toolset: clang
compiler: clang++-10
cxxstd: "03,11,14,17,2a"
container: ubuntu:20.04
os: ubuntu-latest
install: clang-10
- toolset: clang
compiler: clang++-11
cxxstd: "03,11,14,17,2a"
container: ubuntu:20.04
os: ubuntu-latest
install: clang-11
- toolset: clang
compiler: clang++-12
cxxstd: "03,11,14,17,2a"
container: ubuntu:20.04
os: ubuntu-latest
install: clang-12
- toolset: clang
compiler: clang++-13
cxxstd: "03,11,14,17,20,2b"
container: ubuntu:22.04
os: ubuntu-latest
install: clang-13
- toolset: clang
compiler: clang++-14
cxxstd: "03,11,14,17,20,2b"
container: ubuntu:22.04
os: ubuntu-latest
install: clang-14
- toolset: clang
compiler: clang++-15
cxxstd: "03,11,14,17,20,2b"
container: ubuntu:22.04
os: ubuntu-latest
install: clang-15
- toolset: clang
compiler: clang++-16
cxxstd: "03,11,14,17,20,2b"
container: ubuntu:24.04
os: ubuntu-latest
install: clang-16
- toolset: clang
compiler: clang++-17
cxxstd: "03,11,14,17,20,2b"
container: ubuntu:24.04
os: ubuntu-latest
install: clang-17
- toolset: clang
compiler: clang++-18
cxxstd: "03,11,14,17,20,2b"
container: ubuntu:24.04
os: ubuntu-latest
install: clang-18
- toolset: clang
cxxstd: "03,11,14,17,20,2b"
os: macos-13
- toolset: clang
cxxstd: "03,11,14,17,20,2b"
os: macos-14
- toolset: clang
cxxstd: "03,11,14,17,20,2b"
os: macos-15
runs-on: ${{matrix.os}}
container:
image: ${{matrix.container}}
volumes:
- /node20217:/node20217:rw,rshared
- ${{ startsWith(matrix.container, 'ubuntu:1') && '/node20217:/__e/node20:ro,rshared' || ' ' }}
defaults:
run:
shell: bash
steps:
- name: Setup container environment
if: matrix.container
run: |
apt-get update
apt-get -y install sudo python3 git g++ curl xz-utils
- name: Install nodejs20glibc2.17
if: ${{ startsWith( matrix.container, 'ubuntu:1' ) }}
run: |
curl -LO https://archives.boost.io/misc/node/node-v20.9.0-linux-x64-glibc-217.tar.xz
tar -xf node-v20.9.0-linux-x64-glibc-217.tar.xz --strip-components 1 -C /node20217
ldd /__e/node20/bin/node
- uses: actions/checkout@v4
- name: Install packages
if: matrix.install
run: |
sudo apt-get update
sudo apt-get -y install ${{matrix.install}}
- name: Setup Boost
run: |
echo GITHUB_REPOSITORY: $GITHUB_REPOSITORY
LIBRARY=${GITHUB_REPOSITORY#*/}
echo LIBRARY: $LIBRARY
echo "LIBRARY=$LIBRARY" >> $GITHUB_ENV
echo GITHUB_BASE_REF: $GITHUB_BASE_REF
echo GITHUB_REF: $GITHUB_REF
REF=${GITHUB_BASE_REF:-$GITHUB_REF}
REF=${REF#refs/heads/}
echo REF: $REF
BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true
echo BOOST_BRANCH: $BOOST_BRANCH
cd ..
git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
cp -r $GITHUB_WORKSPACE/* libs/$LIBRARY
git submodule update --init tools/boostdep
python3 tools/boostdep/depinst/depinst.py --git_args "--jobs 3" $LIBRARY
./bootstrap.sh
./b2 -d0 headers
- name: Create user-config.jam
if: matrix.compiler
run: |
echo "using ${{matrix.toolset}} : : ${{matrix.compiler}} ;" > ~/user-config.jam
- name: Run tests
run: |
cd ../boost-root
./b2 -j3 libs/$LIBRARY/test toolset=${{matrix.toolset}} cxxstd=${{matrix.cxxstd}} variant=debug,release
windows:
strategy:
fail-fast: false
matrix:
include:
- toolset: msvc-14.0
cxxstd: "14,latest"
addrmd: 32,64
os: windows-2019
- toolset: msvc-14.2
cxxstd: "14,17,20,latest"
addrmd: 32,64
os: windows-2019
- toolset: msvc-14.3
cxxstd: "14,17,20,latest"
addrmd: 32,64
os: windows-2022
- toolset: clang-win
cxxstd: "14,17,latest"
addrmd: 32,64
os: windows-2022
- toolset: gcc
cxxstd: "03,11,14,17,2a"
addrmd: 64
os: windows-2022
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v4
- name: Setup Boost
shell: cmd
run: |
echo GITHUB_REPOSITORY: %GITHUB_REPOSITORY%
for /f %%i in ("%GITHUB_REPOSITORY%") do set LIBRARY=%%~nxi
echo LIBRARY: %LIBRARY%
echo LIBRARY=%LIBRARY%>>%GITHUB_ENV%
echo GITHUB_BASE_REF: %GITHUB_BASE_REF%
echo GITHUB_REF: %GITHUB_REF%
if "%GITHUB_BASE_REF%" == "" set GITHUB_BASE_REF=%GITHUB_REF%
set BOOST_BRANCH=develop
for /f %%i in ("%GITHUB_BASE_REF%") do if "%%~nxi" == "master" set BOOST_BRANCH=master
echo BOOST_BRANCH: %BOOST_BRANCH%
cd ..
git clone -b %BOOST_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
xcopy /s /e /q %GITHUB_WORKSPACE% libs\%LIBRARY%\
git submodule update --init tools/boostdep
python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" %LIBRARY%
cmd /c bootstrap
b2 -d0 headers
- name: Run tests
shell: cmd
run: |
cd ../boost-root
b2 -j3 libs/%LIBRARY%/test toolset=${{matrix.toolset}} cxxstd=${{matrix.cxxstd}} address-model=${{matrix.addrmd}} variant=debug,release embed-manifest-via=linker
posix-cmake-subdir:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-22.04
- os: ubuntu-24.04
- os: macos-13
- os: macos-14
- os: macos-15
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v4
- name: Install packages
if: matrix.install
run: sudo apt-get -y install ${{matrix.install}}
- name: Setup Boost
run: |
echo GITHUB_REPOSITORY: $GITHUB_REPOSITORY
LIBRARY=${GITHUB_REPOSITORY#*/}
echo LIBRARY: $LIBRARY
echo "LIBRARY=$LIBRARY" >> $GITHUB_ENV
echo GITHUB_BASE_REF: $GITHUB_BASE_REF
echo GITHUB_REF: $GITHUB_REF
REF=${GITHUB_BASE_REF:-$GITHUB_REF}
REF=${REF#refs/heads/}
echo REF: $REF
BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true
echo BOOST_BRANCH: $BOOST_BRANCH
cd ..
git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
cp -r $GITHUB_WORKSPACE/* libs/$LIBRARY
git submodule update --init tools/boostdep
python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" $LIBRARY
- name: Use library with add_subdirectory
run: |
cd ../boost-root/libs/$LIBRARY/test/cmake_subdir_test
mkdir __build__ && cd __build__
cmake ..
cmake --build .
ctest --output-on-failure --no-tests=error
posix-cmake-install:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-22.04
- os: ubuntu-24.04
- os: macos-13
- os: macos-14
- os: macos-15
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v4
- name: Install packages
if: matrix.install
run: sudo apt-get -y install ${{matrix.install}}
- name: Setup Boost
run: |
echo GITHUB_REPOSITORY: $GITHUB_REPOSITORY
LIBRARY=${GITHUB_REPOSITORY#*/}
echo LIBRARY: $LIBRARY
echo "LIBRARY=$LIBRARY" >> $GITHUB_ENV
echo GITHUB_BASE_REF: $GITHUB_BASE_REF
echo GITHUB_REF: $GITHUB_REF
REF=${GITHUB_BASE_REF:-$GITHUB_REF}
REF=${REF#refs/heads/}
echo REF: $REF
BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true
echo BOOST_BRANCH: $BOOST_BRANCH
cd ..
git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
cp -r $GITHUB_WORKSPACE/* libs/$LIBRARY
git submodule update --init tools/boostdep
python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" $LIBRARY
- name: Configure
run: |
cd ../boost-root
mkdir __build__ && cd __build__
cmake -DBOOST_INCLUDE_LIBRARIES=$LIBRARY -DCMAKE_INSTALL_PREFIX=~/.local ..
- name: Install
run: |
cd ../boost-root/__build__
cmake --build . --target install
- name: Use the installed library
run: |
cd ../boost-root/libs/$LIBRARY/test/cmake_install_test && mkdir __build__ && cd __build__
cmake -DCMAKE_INSTALL_PREFIX=~/.local ..
cmake --build .
ctest --output-on-failure --no-tests=error
posix-cmake-test:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-22.04
- os: ubuntu-24.04
- os: macos-13
- os: macos-14
- os: macos-15
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v4
- name: Install packages
if: matrix.install
run: sudo apt-get -y install ${{matrix.install}}
- name: Setup Boost
run: |
echo GITHUB_REPOSITORY: $GITHUB_REPOSITORY
LIBRARY=${GITHUB_REPOSITORY#*/}
echo LIBRARY: $LIBRARY
echo "LIBRARY=$LIBRARY" >> $GITHUB_ENV
echo GITHUB_BASE_REF: $GITHUB_BASE_REF
echo GITHUB_REF: $GITHUB_REF
REF=${GITHUB_BASE_REF:-$GITHUB_REF}
REF=${REF#refs/heads/}
echo REF: $REF
BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true
echo BOOST_BRANCH: $BOOST_BRANCH
cd ..
git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
cp -r $GITHUB_WORKSPACE/* libs/$LIBRARY
git submodule update --init tools/boostdep
python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" $LIBRARY
- name: Configure
run: |
cd ../boost-root
mkdir __build__ && cd __build__
cmake -DBOOST_INCLUDE_LIBRARIES=$LIBRARY -DBUILD_TESTING=ON ..
- name: Build tests
run: |
cd ../boost-root/__build__
cmake --build . --target tests
- name: Run tests
run: |
cd ../boost-root/__build__
ctest --output-on-failure --no-tests=error
windows-cmake-subdir:
strategy:
fail-fast: false
matrix:
include:
- os: windows-2022
- os: windows-2025
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v4
- name: Setup Boost
shell: cmd
run: |
echo GITHUB_REPOSITORY: %GITHUB_REPOSITORY%
for /f %%i in ("%GITHUB_REPOSITORY%") do set LIBRARY=%%~nxi
echo LIBRARY: %LIBRARY%
echo LIBRARY=%LIBRARY%>>%GITHUB_ENV%
echo GITHUB_BASE_REF: %GITHUB_BASE_REF%
echo GITHUB_REF: %GITHUB_REF%
if "%GITHUB_BASE_REF%" == "" set GITHUB_BASE_REF=%GITHUB_REF%
set BOOST_BRANCH=develop
for /f %%i in ("%GITHUB_BASE_REF%") do if "%%~nxi" == "master" set BOOST_BRANCH=master
echo BOOST_BRANCH: %BOOST_BRANCH%
cd ..
git clone -b %BOOST_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
xcopy /s /e /q %GITHUB_WORKSPACE% libs\%LIBRARY%\
git submodule update --init tools/boostdep
python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" %LIBRARY%
- name: Use library with add_subdirectory (Debug)
shell: cmd
run: |
cd ../boost-root/libs/%LIBRARY%/test/cmake_subdir_test
mkdir __build__ && cd __build__
cmake ..
cmake --build . --config Debug
ctest --output-on-failure --no-tests=error -C Debug
- name: Use library with add_subdirectory (Release)
shell: cmd
run: |
cd ../boost-root/libs/%LIBRARY%/test/cmake_subdir_test/__build__
cmake --build . --config Release
ctest --output-on-failure --no-tests=error -C Release
windows-cmake-install:
strategy:
fail-fast: false
matrix:
include:
- os: windows-2022
- os: windows-2025
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v4
- name: Setup Boost
shell: cmd
run: |
echo GITHUB_REPOSITORY: %GITHUB_REPOSITORY%
for /f %%i in ("%GITHUB_REPOSITORY%") do set LIBRARY=%%~nxi
echo LIBRARY: %LIBRARY%
echo LIBRARY=%LIBRARY%>>%GITHUB_ENV%
echo GITHUB_BASE_REF: %GITHUB_BASE_REF%
echo GITHUB_REF: %GITHUB_REF%
if "%GITHUB_BASE_REF%" == "" set GITHUB_BASE_REF=%GITHUB_REF%
set BOOST_BRANCH=develop
for /f %%i in ("%GITHUB_BASE_REF%") do if "%%~nxi" == "master" set BOOST_BRANCH=master
echo BOOST_BRANCH: %BOOST_BRANCH%
cd ..
git clone -b %BOOST_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
xcopy /s /e /q %GITHUB_WORKSPACE% libs\%LIBRARY%\
git submodule update --init tools/boostdep
python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" %LIBRARY%
- name: Configure
shell: cmd
run: |
cd ../boost-root
mkdir __build__ && cd __build__
cmake -DBOOST_INCLUDE_LIBRARIES=%LIBRARY% -DCMAKE_INSTALL_PREFIX=C:/cmake-prefix ..
- name: Install (Debug)
shell: cmd
run: |
cd ../boost-root/__build__
cmake --build . --target install --config Debug
- name: Install (Release)
shell: cmd
run: |
cd ../boost-root/__build__
cmake --build . --target install --config Release
- name: Use the installed library (Debug)
shell: cmd
run: |
cd ../boost-root/libs/%LIBRARY%/test/cmake_install_test && mkdir __build__ && cd __build__
cmake -DCMAKE_INSTALL_PREFIX=C:/cmake-prefix ..
cmake --build . --config Debug
ctest --output-on-failure --no-tests=error -C Debug
- name: Use the installed library (Release)
shell: cmd
run: |
cd ../boost-root/libs/%LIBRARY%/test/cmake_install_test/__build__
cmake --build . --config Release
ctest --output-on-failure --no-tests=error -C Release
windows-cmake-test:
strategy:
fail-fast: false
matrix:
include:
- os: windows-2022
- os: windows-2025
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v4
- name: Setup Boost
shell: cmd
run: |
echo GITHUB_REPOSITORY: %GITHUB_REPOSITORY%
for /f %%i in ("%GITHUB_REPOSITORY%") do set LIBRARY=%%~nxi
echo LIBRARY: %LIBRARY%
echo LIBRARY=%LIBRARY%>>%GITHUB_ENV%
echo GITHUB_BASE_REF: %GITHUB_BASE_REF%
echo GITHUB_REF: %GITHUB_REF%
if "%GITHUB_BASE_REF%" == "" set GITHUB_BASE_REF=%GITHUB_REF%
set BOOST_BRANCH=develop
for /f %%i in ("%GITHUB_BASE_REF%") do if "%%~nxi" == "master" set BOOST_BRANCH=master
echo BOOST_BRANCH: %BOOST_BRANCH%
cd ..
git clone -b %BOOST_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
xcopy /s /e /q %GITHUB_WORKSPACE% libs\%LIBRARY%\
git submodule update --init tools/boostdep
python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" %LIBRARY%
- name: Configure
shell: cmd
run: |
cd ../boost-root
mkdir __build__ && cd __build__
cmake -DBOOST_INCLUDE_LIBRARIES=%LIBRARY% -DBUILD_TESTING=ON ..
- name: Build tests (Debug)
shell: cmd
run: |
cd ../boost-root/__build__
cmake --build . --target tests --config Debug
- name: Run tests (Debug)
shell: cmd
run: |
cd ../boost-root/__build__
ctest --output-on-failure --no-tests=error -C Debug
- name: Build tests (Release)
shell: cmd
run: |
cd ../boost-root/__build__
cmake --build . --target tests --config Release
- name: Run tests (Release)
shell: cmd
run: |
cd ../boost-root/__build__
ctest --output-on-failure --no-tests=error -C Release

View File

@ -1,38 +1,347 @@
# Copyright 2016 Edward Diener
# Copyright 2016-2019 Peter Dimov
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
language: cpp
sudo: false
python: "2.7"
os:
- linux
- osx
dist: xenial
branches:
only:
- master
- develop
- /feature\/.*/
env:
matrix:
- BOGUS_JOB=true
matrix:
exclude:
- env: BOGUS_JOB=true
include:
- os: linux
compiler: g++
env: TOOLSET=gcc COMPILER=g++ CXXSTD=03,11
- os: linux
compiler: g++-4.4
env: TOOLSET=gcc COMPILER=g++-4.4 CXXSTD=98
addons:
apt:
packages:
- g++-4.4
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: g++-4.6
env: TOOLSET=gcc COMPILER=g++-4.6 CXXSTD=03,0x
addons:
apt:
packages:
- g++-4.6
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: g++-4.7
env: TOOLSET=gcc COMPILER=g++-4.7 CXXSTD=03,11
addons:
apt:
packages:
- g++-4.7
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: g++-4.8
env: TOOLSET=gcc COMPILER=g++-4.8 CXXSTD=03,11
addons:
apt:
packages:
- g++-4.8
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: g++-4.9
env: TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=03,11
addons:
apt:
packages:
- g++-4.9
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: g++-5
env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=03,11,14,1z
addons:
apt:
packages:
- g++-5
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: g++-6
env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=03,11,14,1z
addons:
apt:
packages:
- g++-6
sources:
- ubuntu-toolchain-r-test
- os: linux
dist: trusty
compiler: g++-7
env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=03,11,14,17
addons:
apt:
packages:
- g++-7
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: g++-8
env: TOOLSET=gcc COMPILER=g++-8 CXXSTD=03,11,14,17
addons:
apt:
packages:
- g++-8
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: g++-9
env: TOOLSET=gcc COMPILER=g++-9 CXXSTD=03,11,14,17
addons:
apt:
packages:
- g++-9
sources:
- ubuntu-toolchain-r-test
- os: linux
dist: bionic
compiler: g++-10
env: TOOLSET=gcc COMPILER=g++-10 CXXSTD=03,11,14,17,2a
addons:
apt:
packages:
- g++-10
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: clang++
env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11
- os: linux
dist: trusty
compiler: /usr/bin/clang++
env: TOOLSET=clang COMPILER=/usr/bin/clang++ CXXSTD=03,11
addons:
apt:
packages:
- clang-3.3
- os: linux
dist: trusty
compiler: /usr/bin/clang++
env: TOOLSET=clang COMPILER=/usr/bin/clang++ CXXSTD=03,11
addons:
apt:
packages:
- clang-3.4
- os: linux
compiler: clang++-3.5
env: TOOLSET=clang COMPILER=clang++-3.5 CXXSTD=03,11,14,1z
addons:
apt:
packages:
- clang-3.5
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: clang++-3.6
env: TOOLSET=clang COMPILER=clang++-3.6 CXXSTD=03,11,14,1z
addons:
apt:
packages:
- clang-3.6
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: clang++-3.7
env: TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=03,11,14,1z
addons:
apt:
packages:
- clang-3.7
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: clang++-3.8
env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=03,11,14,1z
addons:
apt:
packages:
- clang-3.8
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: clang++-3.9
env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=03,11,14,1z
addons:
apt:
packages:
- clang-3.9
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: clang++-4.0
env: TOOLSET=clang COMPILER=clang++-4.0 CXXSTD=03,11,14,1z
addons:
apt:
packages:
- clang-4.0
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: clang++-5.0
env: TOOLSET=clang COMPILER=clang++-5.0 CXXSTD=03,11,14,1z
addons:
apt:
packages:
- clang-5.0
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: clang++-6.0
env: TOOLSET=clang COMPILER=clang++-6.0 CXXSTD=03,11,14,17
addons:
apt:
packages:
- clang-6.0
sources:
- ubuntu-toolchain-r-test
- os: linux
compiler: clang++-7
env: TOOLSET=clang COMPILER=clang++-7 CXXSTD=03,11,14,17
addons:
apt:
packages:
- clang-7
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-xenial-7
- os: linux
compiler: clang++-8
env: TOOLSET=clang COMPILER=clang++-8 CXXSTD=03,11,14,17
addons:
apt:
packages:
- clang-8
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-xenial-8
- os: linux
compiler: clang++-9
env: TOOLSET=clang COMPILER=clang++-9 CXXSTD=03,11,14,17,2a
addons:
apt:
packages:
- clang-9
sources:
- ubuntu-toolchain-r-test
- sourceline: 'deb https://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main'
key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
- os: linux
compiler: clang++-10
env: TOOLSET=clang COMPILER=clang++-10 CXXSTD=03,11,14,17,2a
addons:
apt:
packages:
- clang-10
sources:
- ubuntu-toolchain-r-test
- sourceline: 'deb https://apt.llvm.org/xenial/ llvm-toolchain-xenial-10 main'
key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
- os: linux
dist: trusty
compiler: clang++-libc++
env: TOOLSET=clang COMPILER=clang++-libc++ CXXSTD=03,11,14,1z
addons:
apt:
packages:
- libc++-dev
- os: osx
compiler: clang++
env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z
- os: linux
env: CMAKE_TEST=1
script:
- mkdir __build__ && cd __build__
- cmake -DBUILD_TESTING=ON -DBOOST_INCLUDE_LIBRARIES=preprocessor ..
- cmake --build . --target tests
- ctest --output-on-failure
- os: linux
env: CMAKE_SUBDIR_TEST=1
install: true
script:
- cd test/cmake_subdir_test && mkdir __build__ && cd __build__
- cmake ..
- cmake --build .
- cmake --build . --target check
- os: linux
env: CMAKE_INSTALL_TEST=1
script:
- pip install --user cmake
- mkdir __build__ && cd __build__
- cmake -DBOOST_INCLUDE_LIBRARIES=preprocessor -DCMAKE_INSTALL_PREFIX=~/.local ..
- cmake --build . --target install
- cd ../libs/preprocessor/test/cmake_install_test && mkdir __build__ && cd __build__
- cmake -DCMAKE_INSTALL_PREFIX=~/.local ..
- cmake --build .
- cmake --build . --target check
install:
- BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true
- cd ..
- git clone -b $TRAVIS_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
- git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
- cd boost-root
- git submodule update --init --depth 1 tools/build
- git submodule update --init --depth 1 libs/config
- git submodule update --init --depth 1 tools/boostdep
- git submodule update --init tools/boostdep
- cp -r $TRAVIS_BUILD_DIR/* libs/preprocessor
- python tools/boostdep/depinst/depinst.py preprocessor
- ./bootstrap.sh
- ./b2 headers
script:
- TOOLSET=gcc,clang
- if [ $TRAVIS_OS_NAME == osx ]; then TOOLSET=clang; fi
- ./b2 libs/preprocessor/test toolset=$TOOLSET
- |-
echo "using $TOOLSET : : $COMPILER ;" > ~/user-config.jam
- ./b2 libs/preprocessor/test -j 3 toolset=$TOOLSET cxxstd=$CXXSTD $ADDRMD
notifications:
email:

18
CMakeLists.txt Normal file
View File

@ -0,0 +1,18 @@
# Copyright 2019 Peter Dimov
# 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
cmake_minimum_required(VERSION 3.5...3.16)
project(boost_preprocessor VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES CXX)
add_library(boost_preprocessor INTERFACE)
add_library(Boost::preprocessor ALIAS boost_preprocessor)
target_include_directories(boost_preprocessor INTERFACE include)
if(BUILD_TESTING)
add_subdirectory(test)
endif()

123
appveyor.yml Normal file
View File

@ -0,0 +1,123 @@
# Copyright 2017 Edward Diener
# Copyright 2018 Mike Dev
# Copyright 2019 Peter Dimov
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
version: 1.0.{build}-{branch}
shallow_clone: true
configuration:
- boost_build_test
- cmake_test
- cmake_subdir_test
- cmake_install_test
branches:
only:
- master
- develop
- /feature\/.*/
environment:
matrix:
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
TOOLSET: msvc-10.0
ADDRMD: 32
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
TOOLSET: msvc-11.0
ADDRMD: 32
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
TOOLSET: msvc-12.0
ADDRMD: 32,64
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
TOOLSET: msvc-14.0
ADDRMD: 32,64
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
TOOLSET: msvc-14.1
ADDRMD: 32,64
CXXSTD: 14,17,latest
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
TOOLSET: msvc-14.2
ADDRMD: 32,64
CXXSTD: 14,17,latest
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
TOOLSET: msvc-14.2
ADDRMD: 32,64
CXXSTD: 14,17,latest
PREPROCESSOR: /Zc:preprocessor
matrix:
exclude:
- configuration: cmake_test
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
- configuration: cmake_test
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
- configuration: cmake_test
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
build: off
install:
- set BOOST_BRANCH=develop
- if "%APPVEYOR_REPO_BRANCH%" == "master" set BOOST_BRANCH=master
- cd ..
- git clone -b %BOOST_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root
- cd boost-root
- git submodule update --init tools/build
- git submodule update --init libs/config
- git submodule update --init tools/boostdep
- git submodule update --init tools/boost_install
- git submodule update --init libs/headers
- xcopy /s /e /q %APPVEYOR_BUILD_FOLDER% libs\preprocessor\
- python tools/boostdep/depinst/depinst.py preprocessor
for:
-
matrix:
only:
- configuration: boost_build_test
test_script:
- bootstrap
- b2 -d0 headers
- if not "%CXXSTD%" == "" set CXXSTD=cxxstd=%CXXSTD%
- if not "%ADDRMD%" == "" set ADDRMD=address-model=%ADDRMD%
- if not "%PREPROCESSOR%" == "" set PREPROCESSOR=cflags="%PREPROCESSOR%"
- b2 libs/preprocessor/test -j3 toolset=%TOOLSET% %CXXSTD% %ADDRMD% %PREPROCESSOR% variant=debug,release
-
matrix:
only:
- configuration: cmake_test
test_script:
- mkdir __build__ && cd __build__
- cmake -DBOOST_ENABLE_CMAKE=1 -DBoost_VERBOSE=1 -DBOOST_INCLUDE_LIBRARIES=preprocessor ..
- ctest --output-on-failure -R boost_preprocessor -C Debug
-
matrix:
only:
- configuration: cmake_subdir_test
test_script:
- cd libs/preprocessor/test/cmake_subdir_test && mkdir __build__ && cd __build__
- cmake ..
- cmake --build .
- cmake --build . --target check
-
matrix:
only:
- configuration: cmake_install_test
test_script:
- mkdir __build__ && cd __build__
- cmake -DBOOST_ENABLE_CMAKE=1 -DBoost_VERBOSE=1 -DBOOST_INCLUDE_LIBRARIES=preprocessor -DCMAKE_INSTALL_PREFIX=C:/cmake-prefix ..
- cmake --build . --target install
- cd ../libs/preprocessor/test/cmake_install_test && mkdir __build__ && cd __build__
- cmake -DCMAKE_INSTALL_PREFIX=C:/cmake-prefix ..
- cmake --build .
- cmake --build . --target check

18
build.jam Normal file
View File

@ -0,0 +1,18 @@
# Copyright René Ferdinand Rivera Morell 2023-2024
# 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)
require-b2 5.2 ;
project /boost/preprocessor
;
explicit
[ alias boost_preprocessor : : :
: <include>include <library>$(boost_dependencies) ]
[ alias all : boost_preprocessor test ]
;
call-if : boost-library preprocessor
;

View File

@ -35,7 +35,7 @@ blockquote.epigraph {
dd {
margin-bottom: 0.5em }
/* Uncomment (& remove this text!) to get bold-faced definition list terms
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dt {
font-weight: bold }
*/

View File

@ -1,6 +1,8 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<meta content="text/html; charset=windows-1252"
http-equiv="content-type">
<title>contents.html</title>
<link rel="stylesheet" type="text/css" href="styles.css">
<style>
@ -8,27 +10,24 @@
</style>
</head>
<body>
<h4><a href="AppendixA-AnIntroductiontoPreprocessorMetaprogramming.html"
target="_top">Introduction</a></h4>
<h4><a href="index.html" target="_top">Introduction</a></h4>
<h4><a
href="AppendixA-AnIntroductiontoPreprocessorMetaprogramming.html"
target="_top">Basic Intro</a></h4>
<a href="topics.html"> </a>
<h4><a href="topics.html">Topics</a></h4>
<a href="topics.html">
</a>
<h4><a href="topics.html"></a><a href="terms.html">Terminology</a></h4>
<a href="terms.html">
</a>
<h4><a href="terms.html"></a><a href="data.html">Data Types</a></h4>
<a href="data.html">
</a>
<h4><a href="data.html"></a><a href="ref.html">Reference</a></h4>
<a href="ref.html">
</a>
<h4><a href="ref.html"></a><a href="headers.html">Headers</a></h4>
<a href="headers.html">
</a>
<h4><a href="headers.html"></a><a href="examples.html">Examples</a></h4>
<a href="examples.html">
</a>
<h4><a href="examples.html"></a><a href="miscellanea.html">Miscellanea</a></h4>
<a href="topics.html"> </a>
<h4><a href="terms.html">Terminology</a></h4>
<a href="terms.html"> </a>
<h4><a href="data.html">Data Types</a></h4>
<a href="data.html"> </a>
<h4><a href="ref.html">Reference</a></h4>
<a href="ref.html"> </a>
<h4><a href="headers.html">Headers</a></h4>
<a href="headers.html"> </a>
<h4><a href="examples.html">Examples</a></h4>
<a href="examples.html"> </a>
<h4><a href="miscellanea.html">Miscellanea</a></h4>
<a href="miscellanea.html">
<!--
<EFBFBD> Copyright Housemarque Oy 2002<30> Copyright Paul Mensonides 2002

View File

@ -24,11 +24,9 @@
0 size. The notation for an empty array is '(0,())'.<br>
<br>
<span style="font-style: italic;"> </span></div>
<div>With variadic macro support a <i>tuple </i>has all of the
<div>A <i>tuple </i>has all of the
functionality as an <i>array</i>, knows its own size, and is easier
syntactically to use. Because of that an <i>array</i> should be used, as
opposed to a <i>tuple</i>, only if your compiler does not support
variadic macros. The only advantage an <i>array </i>has over a <i>tuple
syntactically to use. The only advantage an <i>array </i>has over a <i>tuple
</i>is that an <i>array </i>can be empty while a <i>tuple </i>always
has at least one element and therefore can never have a size of 0.<br>
<br>

View File

@ -15,10 +15,8 @@
A <i>tuple </i>cannot be empty. The notation '()' as a <i>tuple </i>is
a single element <i>tuple </i>of size 1, where the element is empty. </div>
<div> <i>Tuples</i> are fast and easy to use.&nbsp; With variadic macro
support it is not necessary to know the size of a <i>tuple; </i>without
variadic macro support&nbsp;all access to <i>tuples</i> requires
knowledge of its size. Use a <i>tuple </i>instead of an <i>array</i> if
your compiler supports variadic macros, since a <i>tuple </i>has all of
support it is not necessary to know the size of a <i>tuple</i>.
Use a <i>tuple </i>instead of an <i>array</i>, since a <i>tuple </i>has all of
the functionality as an <i>array </i>and is easier syntactically to use.
The only functionality an <i>array </i>has which a <i>tuple </i>does
not have is that an <i>array </i>can be empty whereas a <i>tuple </i>cannot

View File

@ -80,12 +80,16 @@
<li><a href="headers/facilities.html">facilities.hpp</a></li>
<li>facilities/</li>
<li class="ps"><a href="headers/facilities/apply.html">apply.hpp</a></li>
<li class="ps"><a href="headers/facilities/check_empty.html">check_empty.hpp</a>
<a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li class="ps"><a href="headers/facilities/empty.html">empty.hpp</a></li>
<li class="ps"><a href="headers/facilities/expand.html">expand.hpp</a></li>
<li class="ps"><a href="headers/facilities/identity.html">identity.hpp</a></li>
<li class="ps"><a href="headers/facilities/intercept.html">intercept.hpp</a></li>
<li class="ps"><a href="headers/facilities/overload.html">overload.hpp</a>
<a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li class="ps"><a href="headers/facilities/va_opt.html">va_opt.hpp</a>
<a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="headers/for.html">for.hpp*</a></li>
<li><a href="headers/identity.html">identity.hpp*</a></li>
<li><a href="headers/if.html">if.hpp*</a></li>
@ -230,6 +234,7 @@
<li><a href="headers/variadic.html">variadic.hpp</a></li>
<li>variadic/</li>
<li class="ps"><a href="headers/variadic/elem.html">elem.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li class="ps"><a href="headers/variadic/has_opt.html">has_opt.hpp</a> </li>
<li class="ps"><a href="headers/variadic/size.html">size.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li class="ps"><a href="headers/variadic/to_array.html">to_array.hpp</a> <a
href="topics/variadic_macros.html#VNotation">(v)</a></li>

View File

@ -1,32 +1,35 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>config/config.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>config/config.hpp</b>
header defines internal configuration macros as well as a macro for determining variadic macro support. The file
is automatically included whenever any Boost PP macros are used. The end-user can manually
include it in order to use the BOOST_PP_VARIADICS macro, but normally should never have to do so. </div>
<h4>
Usage
</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/config/config.hpp&gt;</b>
</div>
<h4>
Contents
</h4>
<ul>
<li><a href="../../ref/variadics.html">BOOST_PP_VARIADICS</a></li></ul>
<hr size="1">
<div style="margin-left: 0px;"><i><EFBFBD> Copyright Edward Diener 2011,2014</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
<title>config/config.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>config/config.hpp</b>
header defines internal configuration macros as well as a macro
for determining whether the compiler's preprocessor conforms to
the standard. The file is automatically included whenever any
Boost PP macros are used.The end-user can manually include it
in order to use the BOOST_PP_IS_STANDARD macro, but normally
should never have to do so.</div>
<h4> Usage </h4>
<div class="code"> #include <b>&lt;boost/preprocessor/config/config.hpp&gt;</b>
</div>
<h4> Contents </h4>
<ul>
<li><a href="../../ref/is_standard.html">BOOST_PP_IS_STANDARD</a><br>
</li>
</ul>
<hr size="1">
<div style="margin-left: 0px;"><i><EFBFBD> Copyright Edward Diener
2011,2014,2020</i> </div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version
1.0. (See accompanying file <a
href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

View File

@ -15,6 +15,7 @@
<ul>
<li><a href="facilities/apply.html">&lt;boost/preprocessor/facilities/apply.hpp&gt;</a></li>
<li><a href="facilities/empty.html">&lt;boost/preprocessor/facilities/empty.hpp&gt;</a></li>
<li><a href="facilities/check_empty.html">&lt;boost/preprocessor/facilities/check_empty.hpp&gt;</a> <a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
<li><a href="facilities/expand.html">&lt;boost/preprocessor/facilities/expand.hpp&gt;</a></li>
<li><a href="facilities/identity.html">&lt;boost/preprocessor/facilities/identity.hpp&gt;</a></li>
<li><a href="facilities/intercept.html">&lt;boost/preprocessor/facilities/intercept.hpp&gt;</a></li>

View File

@ -0,0 +1,29 @@
<html>
<head>
<title>facilities/check_empty.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>facilities/check_empty.hpp</b> header defines a variadic macro for the C++20 level that checks if its data is empty or not.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/facilities/check_empty.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/check_empty.html">BOOST_PP_CHECK_EMPTY</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
</ul>
<hr size="1">
<div style="margin-left: 0px;">
<i></i><i><EFBFBD> Copyright Edward Diener 2019</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href=
"http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

View File

@ -0,0 +1,32 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;
charset=windows-1252">
<title>facilities/va_opt.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>facilities/va_opt.hpp</b>
header defines a variadic macro for the C++20 level that offers a
more flexible alternative to the __VA_OPT__ construct. </div>
<h4>Usage</h4>
<div class="code"> #include <b>&lt;boost/preprocessor/facilities/va_opt.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/va_opt.html">BOOST_PP_VA_OPT</a> <a
href="../../topics/variadic_macros.html#VNotation"
target="_self">(v)</a></li>
</ul>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2019</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version
1.0. (See accompanying file <a
href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

View File

@ -14,6 +14,7 @@
<h4>Includes</h4>
<ul>
<li><a href="variadic/elem.html">&lt;boost/preprocessor/variadic/elem.hpp&gt;</a> <a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
<li><a href="variadic/has_opt.html">&lt;boost/preprocessor/variadic/has_opt.hpp&gt;</a> </li>
<li><a href="variadic/size.html">&lt;boost/preprocessor/variadic/size.hpp&gt;</a> <a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
<li><a href="variadic/to_array.html">&lt;boost/preprocessor/variadic/to_array.hpp&gt;</a> <a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
<li><a href="variadic/to_list.html">&lt;boost/preprocessor/variadic/to_list.hpp&gt;</a> <a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
@ -22,7 +23,7 @@
</ul>
<hr size="1">
<div style="margin-left: 0px;">
<i></i><i><EFBFBD> Copyright Edward Diener 2011,2013</i>
<i></i><i><EFBFBD> Copyright Edward Diener 2011,2013,2019</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See

View File

@ -0,0 +1,25 @@
<html><head>
<title>variadic/has_opt.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
<div style="margin-left: 0px;">
The <b>variadic/has_opt.hpp</b> header defines a macro that determines whether or not the __VA_OPT__ construct is supported.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/variadic/has_opt.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/variadic_has_opt.html">BOOST_PP_VARIADIC_HAS_OPT</a> <br>
</li>
</ul>
<hr size="1">
<div style="margin-left: 0px;">
<i></i><i><EFBFBD> Copyright Edward Diener 2019</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body></html>

View File

@ -45,6 +45,7 @@
<li><a href="ref/bool.html">BOOL</a></li>
<!-- C -->
<li><a href="ref/cat.html">CAT</a></li>
<li><a href="ref/check_empty.html">CHECK_EMPTY</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/comma.html">COMMA</a></li>
<li><a href="ref/comma_if.html">COMMA_IF</a></li>
<li><a href="ref/compl.html">COMPL</a></li>
@ -109,6 +110,7 @@
<li><a href="ref/is_begin_parens.html">IS_BEGIN_PARENS</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/is_iterating.html">IS_ITERATING</a></li>
<li><a href="ref/is_selfish.html">IS_SELFISH</a></li>
<li><a href="ref/is_standard.html">IS_STANDARD</a></li>
<li><a href="ref/iterate.html">ITERATE</a></li>
<li><a href="ref/iteration.html">ITERATION</a></li>
<li><a href="ref/iteration_depth.html">ITERATION_DEPTH</a></li>
@ -295,9 +297,11 @@
<!-- U -->
<li><a href="ref/update_counter.html">UPDATE_COUNTER</a></li>
<!-- V -->
<li><a href="ref/va_opt.html">VA_OPT</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/value.html">VALUE</a></li>
<li><a href="ref/variadics.html">VARIADICS</a></li>
<li><a href="ref/variadic_elem.html">VARIADIC_ELEM</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/variadic_has_opt.html">VARIADIC_HAS_OPT</a></li>
<li><a href="ref/variadic_seq_to_seq.html">VARIADIC_SEQ_TO_SEQ</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/variadic_size.html">VARIADIC_SIZE</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/variadic_to_array.html">VARIADIC_TO_ARRAY</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>

View File

@ -1,37 +1,52 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>BOOST_PP_ARRAY_ENUM</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_ARRAY_ENUM</b> macro converts an <i>array</i> to its comma-separated elements. The comma-separated elements are in the form of <i>variadic data</i>.<br>
</div>
<h4> Usage </h4>
<div class="code"> <b>BOOST_PP_ARRAY_ENUM</b>(<i>array</i>) </div>
<h4> Arguments </h4>
<dl>
<dt>array</dt>
<dd> The <i>array</i> whose elements are to be converted. </dd>
</dl>
<h4> Remarks </h4>
<div> This macro expands to a comma-separated list of the elements in <i>array</i>.&nbsp;
For example, <b>BOOST_PP_ARRAY_ENUM</b>((3,(<i>x,</i><i>y,</i><i>z</i>)))
expands to...
<div> <i>x</i>, <i>y</i>, <i>z</i> </div>
</div>
<h4> Requirements </h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/array/enum.html">&lt;boost/preprocessor/array/enum.hpp&gt;</a>
</div>
<h4> Sample Code </h4>
<div>
<pre>#include &lt;<a href="../headers/array/enum.html">boost/preprocessor/array/enum.hpp</a>&gt;<br><br>#define ARRAY (5,(B,O,O,S,T))<br><br><a href="array_enum.html">BOOST_PP_ARRAY_ENUM</a>(ARRAY) // expands to B, O, O, S, T<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2011</i> </div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0.
(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
<title>BOOST_PP_ARRAY_ENUM</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_ARRAY_ENUM</b>
macro converts an <i>array</i> to its comma-separated elements.
The comma-separated elements are in the form of <i>variadic data</i>.<br>
</div>
<h4> Usage </h4>
<div class="code"> <b>BOOST_PP_ARRAY_ENUM</b>(<i>array</i>) </div>
<h4> Arguments </h4>
<dl>
<dt>array</dt>
<dd> The <i>array</i> whose elements are to be converted. </dd>
</dl>
<h4> Remarks </h4>
<div> This macro expands to a comma-separated list of the elements
in <i>array</i>.&nbsp;
For example, <b>BOOST_PP_ARRAY_ENUM</b>((3,(<i>x,</i><i>y,</i><i>z</i>)))
expands
to...
<div> <i>x</i>, <i>y</i>, <i>z<br>
</i> </div>
</div>
<p>&nbsp;&nbsp;&nbsp; In <a
href="file:///E:/Programming/VersionControl/modular-boost/libs/preprocessor/doc/topics/variadic_macros.html#C20_Support_For_Variadic_Macros">C++
20</a> mode if the array is empty the resulting <i>variadic</i>
<i>data</i> will be empty.</p>
<h4> </h4>
<h4>Requirements </h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/array/enum.html">&lt;boost/preprocessor/array/enum.hpp&gt;</a>
</div>
<h4> Sample Code </h4>
<div>
<pre>#include &lt;<a href="../headers/array/enum.html">boost/preprocessor/array/enum.hpp</a>&gt;<br><br>#define ARRAY (5,(B,O,O,S,T))<br><br><a href="array_enum.html">BOOST_PP_ARRAY_ENUM</a>(ARRAY) // expands to B, O, O, S, T<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener
2011</i> </div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version
1.0.
(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

68
doc/ref/check_empty.html Normal file
View File

@ -0,0 +1,68 @@
<html>
<head>
<title>BOOST_PP_CHECK_EMPTY</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_CHECK_EMPTY</b> variadic macro
checks to see if its variadic input is empty or not. It expands to 1 if its input
is empty and expands to 0 if its input is not empty. The macro only exists when
the compilation is at the C++20 level and the __VA_OPT__ construct is supported.</div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_CHECK_EMPTY</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
</div>
<h4>Arguments</h4>
<dl>
<dt>...<br>
</dt>
<dd> The <i>variadic data</i> to be checked for emptiness. </dd>
</dl>
<h4>Remarks</h4>
<div>
When the macro invocation BOOST_PP_VARIADIC_HAS_OPT() expands to 1, then this
macro exists and can be invoked, otherwise this macro does not exist
and attempting to invoke it will lead to a preprocessor error that the macro
can not be found. Because of this condition the header file for including
this macro includes the header file for the BOOST_PP_VARIADIC_HAS_OPT macro.<br>
It is possible to pass data to this macro which expands to nothing, in which
case this macro will expand to 1 just as if nothing has been passed.
</div>
<h4>See Also</h4>
<ul>
<li><a href="variadic_has_opt.html">BOOST_PP_VARIADIC_HAS_OPT</a></li>
</ul>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/facilities/check_empty.html">&lt;boost/preprocessor/facilities/check_empty.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>
#include &lt;<a href="../headers/facilities/check_empty.html">boost/preprocessor/facilities/check_empty.hpp</a>&gt;
# if <a href="variadic_has_opt.html">BOOST_PP_VARIADIC_HAS_OPT</a>()
#define DATA
#define OBJECT OBJECT2
#define OBJECT2
#define FUNC(x) FUNC2(x)
#define FUNC2(x)
#define FUNC_GEN(x,y) (1,2,3)
<a href="check_empty.html">BOOST_PP_CHECK_EMPTY</a>(DATA) // expands to 1
<a href="check_empty.html">BOOST_PP_CHECK_EMPTY</a>(OBJECT) // expands to 1
<a href="check_empty.html">BOOST_PP_CHECK_EMPTY</a>(FUNC(1)) // expands to 1
<a href="check_empty.html">BOOST_PP_CHECK_EMPTY</a>(FUNC) // expands to 0
<a href="check_empty.html">BOOST_PP_CHECK_EMPTY</a>(FUNC_GEN) // expands to 0
#endif
</pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2019</i> </div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0.
(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

View File

@ -22,7 +22,7 @@
<div>
This macro is useful when a delay is necessary to produce the correct semantics of a macro invocation.&nbsp;
For example, when a macro expands to an argument list to another macro.&nbsp;
This macro will expand the the argument list on the first pass, and then rescan to expand any more macros.
This macro will expand the argument list on the first pass, and then rescan to expand any more macros.
</div>
<h4>Requirements</h4>
<div>

View File

@ -33,7 +33,7 @@
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/facilities/identity_n.html">&lt;boost/preprocessor/facilities/identity.hpp&gt;</a>
<b>Header:</b> &nbsp;<a href="../headers/facilities/identity.html">&lt;boost/preprocessor/facilities/identity.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>

44
doc/ref/is_standard.html Normal file
View File

@ -0,0 +1,44 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
<title>BOOST_PP_IS_STANDARD</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_IS_STANDARD </b>macro
specifies whether the compiler's preprocessor is a standard
conforming one or not.<br>
</div>
<h4>Usage</h4>
<div class="code"><b>BOOST_PP_IS_STANDARD()</b><br>
</div>
<b>Remarks</b>
<div> The macro is a <i>function-like</i> macro taking no
parameters. It is used to check if the compiler's preprocessor is
standard conforming. One use for the end-user is to see if <a
href="../topics/limitations.html">limitations</a> can be
changed, since changes will only take affect for standard
conforming preprocessors. The macro expands to 1 if
the compiler's preprocessor is standard conforming and 0 if it is
not.</div>
<b>Requirements</b>
<div> <b>Header:</b> &nbsp;<a
href="../headers/config/variadics.html">&lt;boost/preprocessor/config/config.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>// Beginning of source file<br><br>#include &lt;<a href="../headers/config/variadics.html">boost/preprocessor/config/config.hpp</a>&gt;<br><br>#if <a href="variadics.html">BOOST_PP_IS_STANDARD()</a><br>#define BOOST_PP_LIMIT_MAG 512<br>#endif<br><br>#include &lt;boost/preprocessor/arithmetic.hpp&gt; // etc.<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2020</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version
1.0.
(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

View File

@ -1,34 +1,45 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>BOOST_PP_LIMIT_FOR</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_LIMIT_FOR</b> macro defines the maximum number of <b>BOOST_PP_FOR</b> repetitions.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_LIMIT_FOR</b>
</div>
<h4>Remarks</h4>
<div>
This macro currently expands to <i>256</i>.
</div>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/config/limits.html">&lt;boost/preprocessor/config/limits.hpp&gt;</a>
</div>
<hr size="1">
<div style="margin-left: 0px;">
<i><EFBFBD> Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
</br><i><EFBFBD> Copyright Paul Mensonides 2002</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href=
"http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
<head>
<meta http-equiv="content-type" content="text/html;
charset=windows-1252">
<title>BOOST_PP_LIMIT_FOR</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_LIMIT_FOR</b> macro
defines the maximum number of <b>BOOST_PP_FOR</b> repetitions. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_LIMIT_FOR</b> </div>
<h4>Remarks</h4>
<div>This macro expands by default to <i>256</i>. For a C++
standard conforming preprocessor, the end-user can change this to
512 or 1024 by defining this macro to either value before
including any library headers, as long as the end-user also
defines the <a
href="file:///E:/Programming/VersionControl/modular-boost/libs/preprocessor/doc/ref/limit_mag.html">BOOST_PP_LIMIT_MAG</a>
macro to be equal to or greater than this value.</div>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/config/limits.html">&lt;boost/preprocessor/config/limits.hpp&gt;</a>
</div>
<b>See also<br>
</b>
<ul>
<li><a href="../topics/limitations.html">Limitations</a></li>
<li><a href="../ref/is_standard.html">BOOST_PP_IS_STANDARD</a><br>
</li>
</ul>
<br>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright <a
href="http://www.housemarque.com" target="_top">Housemarque Oy</a>
2002</i> <br>
<i><EFBFBD> Copyright Paul Mensonides 2002</i> </div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version
1.0. (See accompanying file <a
href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

View File

@ -1,34 +1,46 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>BOOST_PP_LIMIT_ITERATION</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_LIMIT_ITERATION</b> macro defines the maximum number of <i>local</i> and <i>file</i> iterations.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_LIMIT_ITERATION</b>
</div>
<h4>Remarks</h4>
<div>
This macro currently expands to <i>256</i>.
</div>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/config/limits.html">&lt;boost/preprocessor/config/limits.hpp&gt;</a>
</div>
<hr size="1">
<div style="margin-left: 0px;">
<i><EFBFBD> Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
</br><i><EFBFBD> Copyright Paul Mensonides 2002</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href=
"http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
<head>
<meta http-equiv="content-type" content="text/html;
charset=windows-1252">
<title>BOOST_PP_LIMIT_ITERATION</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_LIMIT_ITERATION</b>
macro defines the maximum number of <i>local</i> and <i>file</i>
iterations. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_LIMIT_ITERATION</b> </div>
<h4>Remarks</h4>
<div> This macro expands by default to <i>256</i>. For a C++
standard conforming preprocessor, the end-user can change this to
512 or 1024 by defining this macro to either value before
including any library headers, as long as the end-user also
defines the <a href="../ref/limit_mag.html">BOOST_PP_LIMIT_MAG</a>
macro to be equal to or greater than this value. <br>
</div>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/config/limits.html">&lt;boost/preprocessor/config/limits.hpp&gt;</a>
</div>
<b>See also<br>
</b>
<ul>
<li><a href="../topics/limitations.html">Limitations</a></li>
<li><a href="../ref/is_standard.html">BOOST_PP_IS_STANDARD</a><br>
</li>
</ul>
<br>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright <a
href="http://www.housemarque.com" target="_top">Housemarque Oy</a>
2002</i> <br>
<i><EFBFBD> Copyright Paul Mensonides 2002</i> </div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version
1.0. (See accompanying file <a
href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

View File

@ -1,34 +1,42 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>BOOST_PP_LIMIT_MAG</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_LIMIT_MAG</b> macro defines the maximum input and result magnitudes of arithmetic.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_LIMIT_MAG</b>
</div>
<h4>Remarks</h4>
<div>
This macro currently expands to <i>256</i>.
</div>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/config/limits.html">&lt;boost/preprocessor/config/limits.hpp&gt;</a>
</div>
<hr size="1">
<div style="margin-left: 0px;">
<i><EFBFBD> Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
</br><i><EFBFBD> Copyright Paul Mensonides 2002</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href=
"http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
<head>
<meta http-equiv="content-type" content="text/html;
charset=windows-1252">
<title>BOOST_PP_LIMIT_MAG</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_LIMIT_MAG</b> macro
defines the maximum input and result magnitudes of arithmetic. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_LIMIT_MAG</b> </div>
<h4>Remarks</h4>
<div> This macro expands by default to <i>256</i>. For a C++
standard conforming preprocessor, the end-user can change this to
512 or 1024 by defining this macro to either value before
including any library headers.</div>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/config/limits.html">&lt;boost/preprocessor/config/limits.hpp&gt;</a>
</div>
<b>See also<br>
</b>
<ul>
<li><a href="../topics/limitations.html">Limitations</a></li>
<li><a href="../ref/is_standard.html">BOOST_PP_IS_STANDARD</a><br>
</li>
</ul>
<br>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright <a
href="http://www.housemarque.com" target="_top">Housemarque Oy</a>
2002</i> <br>
<i><EFBFBD> Copyright Paul Mensonides 2002</i> </div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version
1.0. (See accompanying file <a
href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

View File

@ -1,39 +1,62 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<meta content="text/html; charset=windows-1252"
http-equiv="content-type">
<title>BOOST_PP_LIMIT_REPEAT</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_LIMIT_REPEAT</b> macro
defines the maximum number of repetitions supported by each <b>BOOST_PP_REPEAT</b>
dimension. </div>
<div style="margin-left: 0px;"> The <b>BOOST_PP_LIMIT_REPEAT</b>
macro defines the maximum number of repetitions supported by each
<b>BOOST_PP_REPEAT</b> dimension. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_LIMIT_REPEAT</b> </div>
<h4>Remarks</h4>
<div> This macro current expands to <i>256</i>.<br>
<div>This macro expands by default to <i>256</i>. For a C++
standard conforming preprocessor, the end-user can change this to
512 or 1024 by defining this macro to either value before
including any library headers, as long as the end-user also
defines the <a
href="file:///E:/Programming/VersionControl/modular-boost/libs/preprocessor/doc/ref/limit_mag.html">BOOST_PP_LIMIT_MAG</a>
macro to be equal to or greater than this value. <br>
<br>
NOTE: for the current latest versions of Microsoft's VC++ compiler there
is a nested macro limit of 256. This means in actuality that the number of
repetitions using VC++ is actually less than 256 depending on the
repetition macro being used. For the BOOST_PP_REPEAT macro this limit
appears to be 252 while for the BOOST_PP_ENUM... series of macros this
limit appears to be around 230, before the VC++ compiler gives a "C1009:
compiler limit : macros nested too deeply" error. This is a compiler
limitation of VC++ which may vary depending on the specific repetition
macro being used, and therefore is not a problem the preprocessor library
can solve.</div>
NOTE: for the current latest versions of default preprocessor for
Microsoft's VC++ compiler there is a nested macro limit of 256.
This means in actuality that the number of repetitions using VC++
is actually less than 256 depending on the repetition macro being
used. For the BOOST_PP_REPEAT macro this limit appears to be 252
while for the BOOST_PP_ENUM... series of macros this limit appears
to be around 230, before the VC++ compiler gives a "C1009:
compiler limit : macros nested too deeply" error. This is a
compiler limitation of VC++ which may vary depending on the
specific repetition macro being used, and therefore is not a
problem the preprocessor library can solve. This limitation of the
default preprocessor for VC++ does not exist for the new standard
conforming preprocessor for VC++ in Visual Studio 2019 invoked
with the<code> /Zc:preprocessor</code> switch.<br>
</div>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/config/limits.html">&lt;boost/preprocessor/config/limits.hpp&gt;</a>
</div>
<b>See also<br>
</b>
<ul>
<li><a href="../topics/limitations.html">Limitations</a></li>
<li><a href="../ref/is_standard.html">BOOST_PP_IS_STANDARD</a><br>
</li>
</ul>
<br>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright <a href="http://www.housemarque.com"
target="_top">Housemarque Oy</a> 2002</i> <br>
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright <a
href="http://www.housemarque.com" target="_top">Housemarque Oy</a>
2002</i> <br>
<i><EFBFBD> Copyright Paul Mensonides 2002</i> </div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
<p><small>Distributed under the Boost Software License, Version
1.0. (See accompanying file <a
href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

View File

@ -1,41 +1,44 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>BOOST_PP_LIMIT_SEQ</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_LIMIT_SEQ</b> macro defines the maximum <i>seq</i> size
supported by the library.
</div>
<h4>
Usage
</h4>
<div class="code">
<b>BOOST_PP_LIMIT_SEQ</b>
</div>
<h4>
Remarks
</h4>
<div>
This macro currently expands to <i>256</i>.
</div>
<h4>
Requirements
</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/config/limits.html">&lt;boost/preprocessor/config/limits.hpp&gt;</a>
</div>
<hr size="1">
<div style="margin-left: 0px;">
<i><EFBFBD> Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
</br><i><EFBFBD> Copyright Paul Mensonides 2002</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href=
"http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
<head>
<meta http-equiv="content-type" content="text/html;
charset=windows-1252">
<title>BOOST_PP_LIMIT_SEQ</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_LIMIT_SEQ</b> macro
defines the maximum <i>seq</i> size supported by the library. </div>
<h4> Usage </h4>
<div class="code"> <b>BOOST_PP_LIMIT_SEQ</b> </div>
<h4> Remarks </h4>
<div>This macro expands by default to 256. For a C++ standard
conforming preprocessor, the macro actually expands to the value
of the <a href="../ref/limit_mag.html">BOOST_PP_LIMIT_MAG</a>
macro, but can be set to a lower value than BOOST_PP_LIMIT_MAG if
desired, but never to a higher value.<br>
</div>
<h4> Requirements </h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/config/limits.html">&lt;boost/preprocessor/config/limits.hpp&gt;</a>
</div>
<b>See also<br>
</b>
<ul>
<li><a href="../topics/limitations.html">Limitations</a></li>
<li><a href="../ref/is_standard.html">BOOST_PP_IS_STANDARD</a><br>
</li>
</ul>
<br>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright <a
href="http://www.housemarque.com" target="_top">Housemarque Oy</a>
2002</i> <br>
<i><EFBFBD> Copyright Paul Mensonides 2002</i> </div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version
1.0. (See accompanying file <a
href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

View File

@ -1,33 +1,47 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<head>
<meta http-equiv="content-type" content="text/html;
charset=windows-1252">
<title>BOOST_PP_LIMIT_TUPLE</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_LIMIT_TUPLE</b> macro defines the maximum <i>tuple</i> size supported by the library.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_LIMIT_TUPLE</b>
</div>
<h4>Remarks</h4>
<div>
This macro currently expands to <i>64</i>.
</div>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/config/limits.html">&lt;boost/preprocessor/config/limits.hpp&gt;</a>
</div>
<hr size="1">
<div style="margin-left: 0px;">
<i><EFBFBD> Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
<br><i><EFBFBD> Copyright Paul Mensonides 2002</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_LIMIT_TUPLE</b>
macro defines the maximum <i>tuple/array</i> size supported by
the library. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_LIMIT_TUPLE</b> </div>
<h4>Remarks</h4>
<div> This macro expands by default to <i>64</i>. For a C++
standard conforming preprocessor, the end-user can change this to
128 or 256 by defining this macro to either value before including
any library headers. If the end-user changes the value of the
macro the <a href="../ref/limit_variadic.html">BOOST_PP_LIMIT_VARIADIC</a>
macro is changed to the same value unless the end-user has changed
BOOST_PP_LIMIT_VARIADIC to a higher value.<br>
</div>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/config/limits.html">&lt;boost/preprocessor/config/limits.hpp&gt;</a>
</div>
<b>See also<br>
</b>
<ul>
<li><a href="../topics/limitations.html">Limitations</a></li>
<li><a href="../ref/is_standard.html">BOOST_PP_IS_STANDARD</a><br>
</li>
</ul>
<br>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright <a
href="http://www.housemarque.com" target="_top">Housemarque Oy</a>
2002</i> <br>
<i><EFBFBD> Copyright Paul Mensonides 2002</i> </div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version
1.0. (See accompanying file <a
href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

View File

@ -1,24 +1,43 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>BOOST_PP_LIMIT_VARIADIC</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_LIMIT_VARIADIC</b> macro
defines the maximum <i>variadic data</i> size&nbsp;supported by the library. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_LIMIT_VARIADIC</b> </div>
<h4>Remarks</h4>
<div> This macro currently expands to <i>64</i>. </div>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/config/limits.html">&lt;boost/preprocessor/config/limits.hpp&gt;</a>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2011</i> </div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0.
(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>
<head>
<meta http-equiv="content-type" content="text/html;
charset=windows-1252">
<title>BOOST_PP_LIMIT_VARIADIC</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_LIMIT_VARIADIC</b>
macro defines the maximum <i>variadic data</i>
size&nbsp;supported by the library. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_LIMIT_VARIADIC</b> </div>
<h4>Remarks</h4>
<div>This macro expands by default to <i>64</i>. For a C++ standard
conforming preprocessor, the end-user can change this to 128 or
256 by defining this macro to either value before including any
library headers. This value can never be less than the value of <a
href="../ref/limit_tuple.html">BOOST_PP_LIMIT_TUPLE</a>.<br>
</div>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/config/limits.html">&lt;boost/preprocessor/config/limits.hpp&gt;</a>
</div>
<b>See also<br>
</b>
<ul>
<li><a href="../topics/limitations.html">Limitations</a></li>
<li><a href="../ref/is_standard.html">BOOST_PP_IS_STANDARD</a><br>
</li>
</ul>
<br>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2011</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version
1.0. (See accompanying file <a
href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

View File

@ -1,34 +1,35 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>BOOST_PP_LIMIT_WHILE</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_LIMIT_WHILE</b> macro defines the maximum number of <b>BOOST_PP_WHILE</b> iterations.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_LIMIT_WHILE</b>
</div>
<h4>Remarks</h4>
<div>
This macro currently expands to <i>256</i>.
</div>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/config/limits.html">&lt;boost/preprocessor/config/limits.hpp&gt;</a>
</div>
<hr size="1">
<div style="margin-left: 0px;">
<i><EFBFBD> Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
</br><i><EFBFBD> Copyright Paul Mensonides 2002</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href=
"http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
<title>BOOST_PP_LIMIT_WHILE</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_LIMIT_WHILE</b>
macro defines the maximum number of <b>BOOST_PP_WHILE</b>
iterations. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_LIMIT_WHILE</b> </div>
<h4>Remarks</h4>
<div>This macro expands by default to <i>256</i>. The macro
actually expands to the value of the <a
href="file:///E:/Programming/VersionControl/modular-boost/libs/preprocessor/doc/ref/limit_mag.html">BOOST_PP_LIMIT_MAG</a>
macro and can not be changed.</div>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/config/limits.html">&lt;boost/preprocessor/config/limits.hpp&gt;</a>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright <a
href="http://www.housemarque.com" target="_top">Housemarque Oy</a>
2002</i> <br>
<i><EFBFBD> Copyright Paul Mensonides 2002</i> </div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version
1.0. (See accompanying file <a
href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

View File

@ -1,62 +1,62 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>BOOST_PP_LIST_ENUM</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_LIST_ENUM</b> macro converts a <i>list</i> to a comma-separated list.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_LIST_ENUM</b>(<i>list</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>list</dt>
<dd>
The <i>list</i> to be converted.
</dd>
</dl>
<h4>Remarks</h4>
<div>
If <i>list</i> is, for example, (<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>))),
this macro will produce:
<div>
<i>a</i>, <i>b</i>, <i>c</i>
</div>
</div>
<div>
Previously, this macro could not be used inside <b>BOOST_PP_FOR</b>.&nbsp;
There is no longer any such restriction.&nbsp;
It is more efficient, however, to use <b>BOOST_PP_LIST_ENUM_R</b> in such a situation.
</div>
<h4>See Also</h4>
<ul>
<li><a href="list_enum_r.html">BOOST_PP_LIST_ENUM_R</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/list/enum.html">&lt;boost/preprocessor/list/enum.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/list/enum.html">boost/preprocessor/list/enum.hpp</a>&gt;
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
<title>BOOST_PP_LIST_ENUM</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_LIST_ENUM</b> macro
converts a <i>list</i> to a comma-separated list. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_LIST_ENUM</b>(<i>list</i>) </div>
<h4>Arguments</h4>
<dl>
<dt>list</dt>
<dd> The <i>list</i> to be converted. </dd>
</dl>
<h4>Remarks</h4>
<div> If <i>list</i> is, for example, (<i>a</i>, (<i>b</i>, (<i>c</i>,
<b>BOOST_PP_NIL</b>))), this macro will produce:
<div> <i>a</i>, <i>b</i>, <i>c</i> </div>
</div>
<div> Previously, this macro could not be used inside <b>BOOST_PP_FOR</b>.&nbsp;
There is no longer any such restriction.&nbsp; It is more
efficient, however, to use <b>BOOST_PP_LIST_ENUM_R</b> in such a
situation.<br>
<br>
In <a
href="file:///E:/Programming/VersionControl/modular-boost/libs/preprocessor/doc/topics/variadic_macros.html#C20_Support_For_Variadic_Macros">C++
20</a> mode if the list is empty the resulting <i>variadic</i>
<i>data</i> will be empty.</div>
<h4>See Also</h4>
<ul>
<li><a href="list_enum_r.html">BOOST_PP_LIST_ENUM_R</a></li>
</ul>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/list/enum.html">&lt;boost/preprocessor/list/enum.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/list/enum.html">boost/preprocessor/list/enum.hpp</a>&gt;
#define LIST (w, (x, (y, (z, <a href="nil.html">BOOST_PP_NIL</a>))))
<a href="list_enum.html">BOOST_PP_LIST_ENUM</a>(LIST) // expands to w, x, y, z
</pre></div>
<hr size="1">
<div style="margin-left: 0px;">
<i><EFBFBD> Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
</br><i><EFBFBD> Copyright Paul Mensonides 2002</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href=
"http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright <a
href="http://www.housemarque.com" target="_top">Housemarque Oy</a>
2002</i> <br>
<i><EFBFBD> Copyright Paul Mensonides 2002</i> </div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version
1.0. (See accompanying file <a
href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

View File

@ -31,6 +31,12 @@
<i>a</i>, <i>b</i>, <i>c</i>
</div>
</div>
<div>
In <a
href="file:///E:/Programming/VersionControl/modular-boost/libs/preprocessor/doc/topics/variadic_macros.html#C20_Support_For_Variadic_Macros">C++
20</a> mode if the list is empty the resulting <i>variadic</i>
<i>data</i> will be empty.
</div>
<h4>See Also</h4>
<ul>
<li><a href="list_enum.html">BOOST_PP_LIST_ENUM</a></li>

View File

@ -30,5 +30,13 @@
<h4> Requirements </h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/list/to_array.html">&lt;boost/preprocessor/list/to_array.hpp&gt;</a>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

View File

@ -28,5 +28,12 @@
<h4> Requirements </h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/list/to_seq.html">&lt;boost/preprocessor/list/to_seq.hpp&gt;</a>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2011</i> </div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

View File

@ -1,17 +1,19 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<meta content="text/html; charset=windows-1252"
http-equiv="content-type">
<title>BOOST_PP_OVERLOAD</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_OVERLOAD</b> variadic
macro expands to the name of a non-variadic macro having a given number of
parameters.<br>
<div style="margin-left: 0px;"> The <b>BOOST_PP_OVERLOAD</b>
variadic macro expands to the name of a non-variadic macro having
a given number of parameters.<br>
</div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_OVERLOAD</b>(<i>prefix</i>,...) <a href="../topics/variadic_macros.html#VNotation"
target="_self"><sup>(v)</sup></a><br>
<div class="code"> <b>BOOST_PP_OVERLOAD</b>(<i>prefix</i>,...) <a
href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
</div>
<h4>Arguments</h4>
<dl>
@ -20,39 +22,43 @@
<dd> The prefix of the non-variadic macro name. </dd>
<dt>...<br>
</dt>
<dd><i> Variadic data</i>. The number of variadic data
elements, as determined by BOOST_PP_VARIADIC_SIZE, is appended to the
<dd><i> Variadic data</i>. The number of variadic data elements,
as determined by BOOST_PP_VARIADIC_SIZE, is appended to the
prefix to form the output non-variadic macro name.<br>
</dd>
</dl>
<h4>Remarks</h4>
<div> This macro creates a macro name which depends on the number of
elements of variadic data. It should be used in the form of <br>
BOOST_PP_OVERLOAD(MACRO_NAME_,__VA_ARGS__)(__VA_ARGS__) in order to
call a non-variadic macro taking a given number of variadic data
elements as non-variadic arguments. In this way one can invoke a
variadic macro with a variable number of parameters which calls one of
a series of non-variadic macros doing very similar things.
BOOST_PP_OVERLOAD(MACRO_NAME_,__VA_ARGS__)(__VA_ARGS__) in order
to call a non-variadic macro taking a given number of variadic
data elements as non-variadic arguments. In this way one can
invoke a variadic macro with a variable number of parameters which
calls one of a series of non-variadic macros doing very similar
things.<br>
<br>
In <a
href="file:///E:/Programming/VersionControl/modular-boost/libs/preprocessor/doc/topics/variadic_macros.html#C20_Support_For_Variadic_Macros">C++
20</a> mode the <i>variadic</i> <i>data</i> can be empty and
the given number of parameters will be 0.<br>
</div>
<b>Requirements</b>
<div> <b>Header:</b> &nbsp;<a href="../headers/facilities/overload.html">&lt;boost/preprocessor/facilities/overload.hpp&gt;</a>
<div> <b>Header:</b> &nbsp;<a
href="../headers/facilities/overload.html">&lt;boost/preprocessor/facilities/overload.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/facilities/overload.html">boost/preprocessor/facilities/overload.hpp</a>&gt;<br>#include <<a
href="../headers/cat.html">boost/preprocessor/cat.hpp</a>><br>#include <<a href="../headers/facilities/empty.html">boost/preprocessor/facilities/empty.hpp</a>><br>#include <<a
href="../headers/arithmetic/add.html">boost/preprocessor/arithmetic/add.hpp</a>><br><br>#define MACRO_1(number) MACRO_2(number,10)<br>#define MACRO_2(number1,number2) <a
href="add.html">BOOST_PP_ADD</a>(number1,number2)<br><br>#if !BOOST_PP_VARIADICS_MSVC<br><br>#define MACRO_ADD_NUMBERS(...) <a
href="overload.html">BOOST_PP_OVERLOAD</a>(MACRO_,__VA_ARGS__)(__VA_ARGS__)<br><br>#else<br><br>// or for Visual C++<br><br>#define MACRO_ADD_NUMBERS(...) \<br> <a
href="cat.html">BOOST_PP_CAT</a>(<a href="overload.html">BOOST_PP_OVERLOAD</a>(MACRO_,__VA_ARGS__)(__VA_ARGS__),<a
href="empty.html">BOOST_PP_EMPTY</a>())<br><br>#endif<br><br>MACRO_ADD_NUMBERS(5) // output is 15<br>MACRO_ADD_NUMBERS(3,6) // output is 9</pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2011,2013,2016</i> </div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0.
(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body></html>
<pre>#include &lt;<a href="../headers/facilities/overload.html">boost/preprocessor/facilities/overload.hpp</a>&gt;<br>#include &lt;<a href="../headers/cat.html">boost/preprocessor/cat.hpp</a>&gt;<br>#include &lt;<a href="../headers/facilities/empty.html">boost/preprocessor/facilities/empty.hpp</a>&gt;<br>#include &lt;<a href="../headers/arithmetic/add.html">boost/preprocessor/arithmetic/add.hpp</a>&gt;<br><br>#define MACRO_1(number) MACRO_2(number,10)<br>#define MACRO_2(number1,number2) <a href="add.html">BOOST_PP_ADD</a>(number1,number2)<br><br>#if !BOOST_PP_VARIADICS_MSVC<br><br>#define MACRO_ADD_NUMBERS(...) <a href="overload.html">BOOST_PP_OVERLOAD</a>(MACRO_,__VA_ARGS__)(__VA_ARGS__)<br><br>#else<br><br>// or for Visual C++'s default preprocessor<br><br>#define MACRO_ADD_NUMBERS(...) \<br> <a href="cat.html">BOOST_PP_CAT</a>(<a href="overload.html">BOOST_PP_OVERLOAD</a>(MACRO_,__VA_ARGS__)(__VA_ARGS__),<a href="empty.html">BOOST_PP_EMPTY</a>())<br><br>#endif<br><br>MACRO_ADD_NUMBERS(5) // output is 15<br>MACRO_ADD_NUMBERS(3,6) // output is 9</pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener
2011,2013,2016</i> </div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version
1.0.
(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

View File

@ -1,58 +1,64 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
<title>BOOST_PP_TUPLE_EAT</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_TUPLE_EAT</b> macro expands to a macro that eats a <i>tuple</i>.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_TUPLE_EAT</b>(<i>size</i>)<br>
<br>
or<br>
<br>
<b>BOOST_PP_TUPLE_EAT</b>(<i>size</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><b></b><br>
</div>
<h4>Arguments</h4>
<dl>
<dt>size</dt>
<dd>
The size of the <i>tuple</i> to be eaten.&nbsp;
Valid <i>tuple</i> sizes range from <i>1</i> to <b>BOOST_PP_LIMIT_TUPLE</b>.
</dd>
</dl>
<h4>Remarks</h4>
<div>
The <i>size</i> argument must be the actual size of the <i>tuple</i> in the non-variadic version. <br>
<br>For the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a>&nbsp;the
size may be left out
completely so that the macro can be invoked as BOOST_PP_TUPLE_EAT(); you may get a warning from some compilers, but the
functionality will still work. If you specify a size in the variadic
version, it will be ignored, but the warning from some compilers will
not occur.<br>
</div>
<h4>See Also</h4>
<ul>
<li><a href="limit_tuple.html">BOOST_PP_LIMIT_TUPLE</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/tuple/eat.html">&lt;boost/preprocessor/tuple/eat.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>#include &lt;<a href="../headers/control/if.html">boost/preprocessor/control/if.hpp</a>&gt;<br>#include &lt;<a href="../headers/tuple/eat.html">boost/preprocessor/tuple/eat.hpp</a>&gt;<br><br>#define OP(a, b) (a b)<br><br>#define MACRO(n) <a href="if.html">BOOST_PP_IF</a>(n, OP, <a href="tuple_eat.html">BOOST_PP_TUPLE_EAT</a>(2))(1, 2)<br><br>// or for the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br><br>#define MACRO(n) <a href="if.html">BOOST_PP_IF</a>(n, OP, <a href="file:///C:/Programming/VersionControl/sandbox/variadics/libs/preprocessor/doc/ref/tuple_eat.html">BOOST_PP_TUPLE_EAT</a>())(1, 2)<br><br>MACRO(0) // expands to nothing<br>MACRO(1) // expands to (1, 2)<br></pre></div>
<hr size="1">
<div style="margin-left: 0px;">
<i><EFBFBD> Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
<br><i><EFBFBD> Copyright Paul Mensonides 2002<br>
</i><i><EFBFBD> Copyright Edward Diener 2011,2013</i><br>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_EAT</b> macro
expands to a macro that eats a <i>tuple</i>. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_TUPLE_EAT</b>() <a
href="file:///E:/Programming/VersionControl/modular-boost/libs/preprocessor/doc/topics/variadic_macros.html#VNotation"
target="_self"><sup>(v)</sup></a><br>
<br>
or<br>
<br>
<b>BOOST_PP_TUPLE_EAT</b>(<i>size</i>) <a
href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><b></b><br>
</div>
<h4>Arguments</h4>
<dl>
<dt>size</dt>
<dd> The size of the <i>tuple</i> to be eaten.&nbsp; The argument
is ignored.<br>
</dd>
</dl>
<h4>Remarks</h4>
<div>The
size may be left out
completely so that the macro can be invoked as
BOOST_PP_TUPLE_EAT(); you may get a warning from some compilers,
but the
functionality will still work. If you specify a size, it will be
ignored, but the warning from some compilers will
not occur.<br>
</div>
<h4>See Also</h4>
<ul>
<li><a href="limit_tuple.html">BOOST_PP_LIMIT_TUPLE</a></li>
</ul>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/tuple/eat.html">&lt;boost/preprocessor/tuple/eat.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/control/if.html">boost/preprocessor/control/if.hpp</a>&gt;<br>#include &lt;<a href="../headers/tuple/eat.html">boost/preprocessor/tuple/eat.hpp</a>&gt;<br><br>#define OP(a, b) (a b)<br>#define MACRO(n) <a href="if.html">BOOST_PP_IF</a>(n, OP, <a href="tuple_eat.html">BOOST_PP_TUPLE_EAT</a>())(1, 2)<br><br>MACRO(0) // expands to nothing<br>MACRO(1) // expands to (1, 2)<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright <a
href="http://www.housemarque.com" target="_top">Housemarque Oy</a>
2002</i> <br>
<i><EFBFBD> Copyright Paul Mensonides 2002<br>
</i><i><EFBFBD> Copyright Edward Diener 2011,2013,2020</i><br>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version
1.0. (See accompanying file <a
href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>
</html>

View File

@ -1,65 +1,64 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
<title>BOOST_PP_TUPLE_ELEM</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_TUPLE_ELEM</b> macro extracts an element from a <i>tuple</i>.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_TUPLE_ELEM</b>(<i>size</i>, <i>i</i>, <i>tuple</i>)<sup></sup><br>
<br>
or<br>
<br>
<b>BOOST_PP_TUPLE_ELEM</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><b></b><br>
</div>
<h4>Arguments</h4>
<dl>
<dt>size</dt>
<dd>
The size of the <i>tuple</i>.&nbsp;
Valid <i>tuple</i> sizes range from <i>1</i> to <b>BOOST_PP_LIMIT_TUPLE</b>.&nbsp;
</dd>
<dt>i</dt>
<dd>
The zero-based index into the <i>tuple</i> of the element to be extracted.&nbsp;
Valid values range from <i>0</i> to <i>size</i> - <i>1</i>.
</dd>
<dt>tuple</dt>
<dd>
The <i>tuple</i> from which an element is to be extracted.
</dd>
</dl>
<h4>Remarks</h4>
<div>
The <i>size</i> argument must be the actual size of the <i>tuple</i>,
and <i>i</i> must be less than the size of the <i>tuple</i>. <br>
<br>You can
invoke the variadic version as BOOST_PP_TUPLE_ELEM(<i>i</i>,<i>tuple</i>) or
BOOST_PP_TUPLE_ELEM(<i>size</i>,<i>i</i>,<i>tuple</i>).
</div>
<h4>See Also</h4>
<ul>
<li><a href="limit_tuple.html">BOOST_PP_LIMIT_TUPLE</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/tuple/elem.html">&lt;boost/preprocessor/tuple/elem.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>#include &lt;<a href="../headers/tuple/elem.html">boost/preprocessor/tuple/elem.hpp</a>&gt;<br><br>#define TUPLE (a, b, c, d)<br><br><a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(4, 0, TUPLE) // expands to a<br><a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(4, 3, TUPLE) // expands to d<br><br>// or for the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br><br><a href="file:///C:/Programming/VersionControl/sandbox/variadics/libs/preprocessor/doc/ref/tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(0, TUPLE) // expands to a in the variadic version<br><a href="file:///C:/Programming/VersionControl/sandbox/variadics/libs/preprocessor/doc/ref/tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(3, TUPLE) // expands to d in the variadic version<br></pre></div>
<hr size="1">
<div style="margin-left: 0px;">
<i><EFBFBD> Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
<br><i><EFBFBD> Copyright Paul Mensonides 2002<br>
</i><i><EFBFBD> Copyright Edward Diener 2011,2013</i><br>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_ELEM</b>
macro extracts an element from a <i>tuple</i>. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_TUPLE_ELEM</b>(<i>i</i>, <i>tuple</i>)
<a
href="file:///E:/Programming/VersionControl/modular-boost/libs/preprocessor/doc/topics/variadic_macros.html#VNotation"
target="_self"><sup>(v)</sup></a><br>
<br>
or<br>
<br>
<b>BOOST_PP_TUPLE_ELEM</b>(<i>size</i>, <i>i</i>, <i>tuple</i>)
<a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
</div>
<h4>Arguments</h4>
<dl>
<dt>size</dt>
<dd> The size of the <i>tuple</i>.&nbsp; The size is ignored.<br>
</dd>
<dt>i</dt>
<dd> The zero-based index into the <i>tuple</i> of the element to
be extracted.&nbsp; Valid values range from <i>0</i> to <i>size</i>
- <i>1</i>. </dd>
<dt>tuple</dt>
<dd> The <i>tuple</i> from which an element is to be extracted. </dd>
</dl>
<h4>Remarks</h4>
<div>You can invoke the variadic macro as BOOST_PP_TUPLE_ELEM(<i>i</i>,<i>tuple</i>),
or BOOST_PP_TUPLE_ELEM(<i>size</i>,<i>i</i>,<i>tuple</i>) for
backward compatibility. </div>
<h4>See Also</h4>
<ul>
<li><a href="limit_tuple.html">BOOST_PP_LIMIT_TUPLE</a></li>
</ul>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/tuple/elem.html">&lt;boost/preprocessor/tuple/elem.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/tuple/elem.html">boost/preprocessor/tuple/elem.hpp</a>&gt;<br><br>#define TUPLE (a, b, c, d)<br><br><a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(0, TUPLE) // expands to a in the variadic version<br><a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(3, TUPLE) // expands to d in the variadic version<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright <a
href="http://www.housemarque.com" target="_top">Housemarque Oy</a>
2002</i> <br>
<i><EFBFBD> Copyright Paul Mensonides 2002<br>
</i><i><EFBFBD> Copyright Edward Diener 2011,2013,2020</i><br>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version
1.0. (See accompanying file <a
href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>
</html>

View File

@ -1,55 +1,68 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
<title>BOOST_PP_TUPLE_ENUM</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_ENUM</b> macro&nbsp;converts a <i>tuple</i> to its comma-separated elements. The comma-separated elements are in the form of <i>variadic data</i>. </div>
<h4> Usage </h4>
<div class="code"> <b>BOOST_PP_TUPLE_ENUM</b>(<i>size,tuple</i>)<br>
<br>
or<br>
<br>
<b>BOOST_PP_TUPLE_ENUM</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><b></b><br>
</div>
<h4> Arguments </h4>
<dl>
<dt>size</dt>
<dd>
The size of the <i>tuple</i>.&nbsp;
Valid <i>tuple</i> sizes range from <i>1</i> to <b>BOOST_PP_LIMIT_TUPLE</b>. <br>
</dd>
<dt>tuple</dt>
<dd> The <i>tuple</i> whose elements are to be converted. </dd>
</dl>
<h4> Remarks </h4>
<div>
<br>You can
invoke the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a> as BOOST_PP_TUPLE_ENUM(<i>tuple</i>) or
BOOST_PP_TUPLE_ENUM(<i>size</i>,<i>tuple</i>).<br>
</div>
<h4>See Also</h4>
<ul>
<li><a href="limit_tuple.html">BOOST_PP_LIMIT_TUPLE</a><br>
</li>
</ul>
<h4> Requirements </h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/tuple/enum.html">&lt;boost/preprocessor/tuple/enum.hpp&gt;</a>
</div>
<h4> Sample Code </h4>
<div>
<pre>#include &lt;<a href="../headers/tuple/enum.html">boost/preprocessor/tuple/enum.hpp</a>&gt;<br><br>#define TUPLE (B,O,O,S,T)<br><br><a href="tuple_enum.html">BOOST_PP_TUPLE_ENUM</a>(5,TUPLE) // expands to B, O, O, S, T<br><br>// or for the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br><br><a href="tuple_enum.html">BOOST_PP_TUPLE_ENUM</a>(TUPLE) // expands to B, O, O, S, T<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
<br>
<i><EFBFBD> Copyright Paul Mensonides 2002<br>
</i><i><EFBFBD> Copyright Edward Diener 2011,2013</i><br>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0.
(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_ENUM</b>
macro&nbsp;converts a <i>tuple</i> to its comma-separated
elements. The comma-separated elements are in the form of <i>variadic
data</i>. </div>
<h4> Usage </h4>
<div class="code"> <b>BOOST_PP_TUPLE_ENUM</b>(<i>tuple</i>) <a
href="file:///E:/Programming/VersionControl/modular-boost/libs/preprocessor/doc/topics/variadic_macros.html#VNotation"
target="_self"><sup>(v)</sup></a><br>
<br>
or<br>
<br>
<b>BOOST_PP_TUPLE_ENUM</b>(<i>size,tuple</i>) <a
href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
</div>
<h4> Arguments </h4>
<dl>
<dt>size</dt>
<dd> The size of the <i>tuple</i>.&nbsp; The size is ignored.<br>
</dd>
<dt>tuple</dt>
<dd> The <i>tuple</i> whose elements are to be converted. </dd>
</dl>
<h4> Remarks </h4>
<div>
You can
invoke the variadic macro <a
href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a>
as BOOST_PP_TUPLE_ENUM(<i>tuple</i>) or
BOOST_PP_TUPLE_ENUM(<i>size</i>,<i>tuple</i>) for backward
compatibility.<br>
</div>
<h4>See Also</h4>
<ul>
<li><a href="limit_tuple.html">BOOST_PP_LIMIT_TUPLE</a><br>
</li>
</ul>
<h4> Requirements </h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/tuple/enum.html">&lt;boost/preprocessor/tuple/enum.hpp&gt;</a>
</div>
<h4> Sample Code </h4>
<div>
<pre>#include &lt;<a href="../headers/tuple/enum.html">boost/preprocessor/tuple/enum.hpp</a>&gt;<br><br>#define TUPLE (B,O,O,S,T)<br><br><a href="tuple_enum.html">BOOST_PP_TUPLE_ENUM</a>(TUPLE) // expands to B, O, O, S, T<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright <a
href="http://www.housemarque.com" target="_top">Housemarque Oy</a>
2002</i>
<br>
<i><EFBFBD> Copyright Paul Mensonides 2002<br>
</i><i><EFBFBD> Copyright Edward Diener 2011,2013,2020</i><br>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version
1.0.
(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>
</html>

View File

@ -1,33 +1,35 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<meta content="text/html; charset=windows-1252"
http-equiv="content-type">
<title>BOOST_PP_TUPLE_INSERT</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_INSERT</b> macro
inserts an element into an <i>tuple</i>.</div>
<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_INSERT</b>
macro inserts an element into an <i>tuple</i>.</div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_TUPLE_INSERT</b>(<i>tuple</i>, <i>i</i>, <i>elem</i>)
<a href="../topics/variadic_macros.html#VNotation"><sup>(v)</sup></a></div>
<div class="code"> <b>BOOST_PP_TUPLE_INSERT</b>(<i>tuple</i>, <i>i</i>,
<i>elem</i>) <a href="../topics/variadic_macros.html#VNotation"><sup>(v)</sup></a></div>
<h4>Arguments</h4>
<dl>
<dt>tuple</dt>
<dd> The <i>tuple</i> into which an element is to be inserted. </dd>
<dt>i</dt>
<dd> The zero-based position in <i>tuple</i> where an element is to be
inserted.&nbsp; Valid values range from <i>0</i> to <b>BOOST_PP_TUPLE_SIZE</b>(<i>tuple</i>).</dd>
<dd> The zero-based position in <i>tuple</i> where an element is
to be inserted.&nbsp; Valid values range from <i>0</i> to <b>BOOST_PP_TUPLE_SIZE</b>(<i>tuple</i>).</dd>
<dt>elem</dt>
<dd> The element to insert. </dd>
</dl>
<h4>Remarks</h4>
<div> This macro inserts <i>elem</i> before the element at index <i>i</i>.
</div>
<div> If the operation attempts to create an <i>tuple</i> that is larger
than <b>BOOST_PP_LIMIT_TUPLE</b>, the result is undefined.</div>
<div> This macro uses <b>BOOST_PP_WHILE</b> interally.&nbsp; Therefore, to
use the <i>d</i> parameter passed from other macros that use <b>BOOST_PP_WHILE</b>,
see <b>BOOST_PP_TUPLE_INSERT_D</b>.</div>
<div> If the operation attempts to create an <i>tuple</i> that is
larger than <b>BOOST_PP_LIMIT_TUPLE</b>, the result is undefined.</div>
<div> This macro uses <b>BOOST_PP_WHILE</b> interally.&nbsp;
Therefore, to use the <i>d</i> parameter passed from other macros
that use <b>BOOST_PP_WHILE</b>, see <b>BOOST_PP_TUPLE_INSERT_D</b>.</div>
<h4>See Also</h4>
<ul>
<li><a href="tuple_insert_d.html">BOOST_PP_TUPLE_INSERT_D</a></li>
@ -42,13 +44,16 @@
#define TUPLE (a, b, d)
<a href="tuple_insert.html">BOOST_PP_TUPLE_INSERT</a>(TUPLE, 2, c) // expands to (a, b, c, d)
</pre></div>
</pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2013</i> </div>
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2013</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
<p><small>Distributed under the Boost Software License, Version
1.0. (See accompanying file <a
href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

View File

@ -1,16 +1,18 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<meta content="text/html; charset=windows-1252"
http-equiv="content-type">
<title>BOOST_PP_TUPLE_INSERT_D</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_INSERT_D</b> macro
inserts an element into a <i>tuple</i>.&nbsp; It reenters <b>BOOST_PP_WHILE</b>
<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_INSERT_D</b>
macro inserts an element into a <i>tuple</i>.&nbsp; It reenters <b>BOOST_PP_WHILE</b>
with maximum efficiency.</div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_TUPLE_INSERT_D</b>(<i>d</i>, <i>tuple</i>,
<i>i</i>, <i>elem</i>) <a href="../topics/variadic_macros.html#VNotation"><sup>(v)</sup></a></div>
<i>i</i>, <i>elem</i>)</div>
<h4>Arguments</h4>
<dl>
<dt>d</dt>
@ -18,16 +20,16 @@
<dt>tuple</dt>
<dd> The <i>tuple</i> into which an element is to be inserted.</dd>
<dt>i</dt>
<dd> The zero-based position in <i>tuple</i> where an element is to be
inserted.&nbsp; Valid values range from <i>0</i> to <b>BOOST_PP_TUPLE_SIZE</b>(<i>tuple</i>).</dd>
<dd> The zero-based position in <i>tuple</i> where an element is
to be inserted.&nbsp; Valid values range from <i>0</i> to <b>BOOST_PP_TUPLE_SIZE</b>(<i>tuple</i>).</dd>
<dt>elem</dt>
<dd> The element to insert. </dd>
</dl>
<h4>Remarks</h4>
<div> This macro inserts <i>elem</i> before the element at index <i>i</i>.
</div>
<div> If the operation attempts to create an <i>tuple</i> that is larger
than <b>BOOST_PP_LIMIT_TUPLE</b>, the result is undefined.</div>
<div> If the operation attempts to create an <i>tuple</i> that is
larger than <b>BOOST_PP_LIMIT_TUPLE</b>, the result is undefined.</div>
<h4>See Also</h4>
<ul>
<li><a href="tuple_insert.html">BOOST_PP_TUPLE_INSERT</a></li>
@ -36,11 +38,13 @@
<div> <b>Header:</b> &nbsp;<a href="../headers/tuple/insert.html">&lt;boost/preprocessor/tuple/insert.hpp&gt;</a>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2013</i> </div>
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2013</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
<p><small>Distributed under the Boost Software License, Version
1.0. (See accompanying file <a
href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

View File

@ -1,60 +1,69 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
<title>BOOST_PP_TUPLE_REM</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_TUPLE_REM</b> macro expands to a macro that removes the parentheses from a <i>tuple</i>.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_TUPLE_REM</b>(<i>size</i>)<br>
<br>
or<br>
<br>
<b>BOOST_PP_TUPLE_REM</b>(<i>size</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
</div>
<h4>Arguments</h4>
<dl>
<dt>size</dt>
<dd>
The size of the <i>tuple</i> from which the parentheses are to be removed.&nbsp;
Valid <i>tuple</i> sizes range from <i>1</i> to <b>BOOST_PP_LIMIT_TUPLE</b>.&nbsp;
</dd>
</dl>
<h4>Remarks</h4>
<div>
The <i>size</i> argument must be the actual size of the <i>tuple</i> in the non-variadic version.<br>
<br>
For the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a>&nbsp;the
size may be left out
completely so that the macro can be invoked as BOOST_PP_TUPLE_REM(); you may get a warning from some compilers, but the
functionality will still work. If you specify a size in the variadic
version, it will be ignored, but the warning from some compilers will
not occur.<br>
<br>Note: For Visual C++ 8.0 ( Visual Studio 2005 ) you must specify the correct <i>size</i> argument as in the non-variadic version.<br>
</div>
<h4>See Also</h4>
<ul>
<li><a href="limit_tuple.html">BOOST_PP_LIMIT_TUPLE</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/tuple/rem.html">&lt;boost/preprocessor/tuple/rem.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>#include &lt;<a href="../headers/tuple/elem.html">boost/preprocessor/tuple/rem.hpp</a>&gt;<br><br><a href="tuple_rem.html">BOOST_PP_TUPLE_REM</a>(3)(x, y, z) // expands to x, y, z<br><br>// or for the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br><br><a href="tuple_rem.html">BOOST_PP_TUPLE_REM</a>()(x, y, z) // expands to x, y, z<br></pre></div>
<hr size="1">
<div style="margin-left: 0px;">
<i><EFBFBD> Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
<br><i><EFBFBD> Copyright Paul Mensonides 2002<br>
</i><i><EFBFBD> Copyright Edward Diener 2011,2013</i><br>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_REM</b> macro
expands to a macro that removes the parentheses from a <i>tuple</i>.
</div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_TUPLE_REM</b>() <a
href="file:///E:/Programming/VersionControl/modular-boost/libs/preprocessor/doc/topics/variadic_macros.html#VNotation"
target="_self"><sup>(v)</sup></a><br>
<br>
or<br>
<br>
<b>BOOST_PP_TUPLE_REM</b>(<i>size</i>) <a
href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
</div>
<h4>Arguments</h4>
<dl>
<dt>size</dt>
<dd> The size of the <i>tuple</i> from which the parentheses are
to be removed.&nbsp; This argument is ignored.<br>
</dd>
</dl>
<h4>Remarks</h4>
<div>The
size may be left out
completely so that the macro can be invoked as
BOOST_PP_TUPLE_REM(); you may get a warning from some compilers,
but the
functionality will still work. If you specify a size, it will be
ignored, but the warning from some compilers will
not occur.<br>
<br>
Note: For Visual C++ 8.0 ( Visual Studio 2005 ) you must specify
the correct <i>size</i> argument as a non-variadic version must
be used.<br>
</div>
<h4>See Also</h4>
<ul>
<li><a href="limit_tuple.html">BOOST_PP_LIMIT_TUPLE</a></li>
</ul>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/tuple/rem.html">&lt;boost/preprocessor/tuple/rem.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/tuple/elem.html">boost/preprocessor/tuple/rem.hpp</a>&gt;<br><br><a href="tuple_rem.html">BOOST_PP_TUPLE_REM</a>()(x, y, z) // expands to x, y, z<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright <a
href="http://www.housemarque.com" target="_top">Housemarque Oy</a>
2002</i> <br>
<i><EFBFBD> Copyright Paul Mensonides 2002<br>
</i><i><EFBFBD> Copyright Edward Diener 2011,2013,2020</i><br>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version
1.0. (See accompanying file <a
href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>
</html>

View File

@ -1,61 +1,64 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
<title>BOOST_PP_TUPLE_REM_CTOR</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_TUPLE_REM_CTOR</b> macro removes the parentheses from a <i>tuple</i>.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_TUPLE_REM_CTOR</b>(<i>size</i>, <i>tuple</i>)<br>
<br>
or<br>
<br>
<b>BOOST_PP_TUPLE_REM_CTOR</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
</div>
<h4>Arguments</h4>
<dl>
<dt>size</dt>
<dd>
The size of the <i>tuple</i> from which the parentheses are to be removed.&nbsp;
Valid <i>tuple</i> sizes range from <i>1</i> to <b>BOOST_PP_LIMIT_TUPLE</b>.&nbsp;
</dd>
<dt>tuple</dt>
<dd>
The <i>tuple</i> from which the parenthesis are removed.
</dd>
</dl>
<h4>Remarks</h4>
<div>
The <i>size</i> argument must be the actual size of <i>tuple</i>.<br>
<br>
You can
invoke the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a> as BOOST_PP_TUPLE_REM_CTOR(<i>tuple</i>) or
BOOST_PP_TUPLE_REM_CTOR(<i>size</i>,<i>tuple</i>).<br>
</div>
<h4>See Also</h4>
<ul>
<li><a href="limit_tuple.html">BOOST_PP_LIMIT_TUPLE</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/tuple/rem.html">&lt;boost/preprocessor/tuple/rem.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>#include &lt;<a href="../headers/tuple/elem.html">boost/preprocessor/tuple/rem.hpp</a>&gt;<br><br><a href="tuple_rem_ctor.html">BOOST_PP_TUPLE_REM_CTOR</a>(3, (x, y, z)) // expands to x, y, z<br><br>// or for the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br><br><a href="tuple_rem_ctor.html">BOOST_PP_TUPLE_REM_CTOR</a>((x, y, z)) // expands to x, y, z<br></pre></div>
<hr size="1">
<div style="margin-left: 0px;">
<i><EFBFBD> Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
<br><i><EFBFBD> Copyright Paul Mensonides 2002<br>
</i><i><EFBFBD> Copyright Edward Diener 2011,2013</i><br>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_REM_CTOR</b>
macro removes the parentheses from a <i>tuple</i>. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_TUPLE_REM_CTOR</b>(<i>tuple</i>) <a
href="file:///E:/Programming/VersionControl/modular-boost/libs/preprocessor/doc/topics/variadic_macros.html#VNotation"
target="_self"><sup>(v)</sup></a><br>
<br>
or<br>
<br>
<b>BOOST_PP_TUPLE_REM_CTOR</b>(<i>size</i>, <i>tuple</i>) <a
href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
</div>
<h4>Arguments</h4>
<dl>
<dt>size</dt>
<dd> The size of the <i>tuple</i> from which the parentheses are
to be removed.&nbsp;&nbsp;This argument is ignored.<br>
</dd>
<dt>tuple</dt>
<dd> The <i>tuple</i> from which the parenthesis are removed. </dd>
</dl>
<h4>Remarks</h4>
<div>You can
invoke the variadic macro <a
href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a>
as BOOST_PP_TUPLE_REM_CTOR(<i>tuple</i>) or
BOOST_PP_TUPLE_REM_CTOR(<i>size</i>,<i>tuple</i>) for backward
compatibility.<br>
</div>
<h4>See Also</h4>
<ul>
<li><a href="limit_tuple.html">BOOST_PP_LIMIT_TUPLE</a></li>
</ul>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/tuple/rem.html">&lt;boost/preprocessor/tuple/rem.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/tuple/elem.html">boost/preprocessor/tuple/rem.hpp</a>&gt;<br><br><a href="tuple_rem_ctor.html">BOOST_PP_TUPLE_REM_CTOR</a>((x, y, z)) // expands to x, y, z<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright <a
href="http://www.housemarque.com" target="_top">Housemarque Oy</a>
2002</i> <br>
<i><EFBFBD> Copyright Paul Mensonides 2002<br>
</i><i><EFBFBD> Copyright Edward Diener 2011,2013,2020</i><br>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version
1.0. (See accompanying file <a
href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>
</html>

View File

@ -1,61 +1,63 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
<title>BOOST_PP_TUPLE_REVERSE</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_TUPLE_REVERSE</b> macro reverses a <i>tuple</i>.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_TUPLE_REVERSE</b>(<i>size</i>, <i>tuple</i>)<br>
<br>
or<br>
<br>
<b>BOOST_PP_TUPLE_REVERSE</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
</div>
<h4>Arguments</h4>
<dl>
<dt>size</dt>
<dd>
The size of the <i>tuple</i> to be reversed.&nbsp;
Valid <i>tuple</i> sizes range from <i>1</i> to <b>BOOST_PP_LIMIT_TUPLE</b>.&nbsp;
</dd>
<dt>tuple</dt>
<dd>
The <i>tuple</i> to be reversed.
</dd>
</dl>
<h4>Remarks</h4>
<div>
The <i>size</i> argument must be the actual size of the <i>tuple</i>.<br>
<br>
You can
invoke the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a> as BOOST_PP_TUPLE_REVERSE(<i>tuple</i>) or
BOOST_PP_TUPLE_REVERSE(<i>size</i>,<i>tuple</i>).<br>
</div>
<h4>See Also</h4>
<ul>
<li><a href="limit_tuple.html">BOOST_PP_LIMIT_TUPLE</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/tuple/reverse.html">&lt;boost/preprocessor/tuple/reverse.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>#include &lt;<a href="../headers/tuple/reverse.html">boost/preprocessor/tuple/reverse.hpp</a>&gt;<br><br><a href="tuple_reverse.html">BOOST_PP_TUPLE_REVERSE</a>(3, (x, y, z)) // expands to (z, y, x)<br><br>// or for the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br><br><a href="tuple_reverse.html">BOOST_PP_TUPLE_REVERSE</a>((x, y, z)) // expands to (z, y, x)<br></pre></div>
<hr size="1">
<div style="margin-left: 0px;">
<i><EFBFBD> Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
<br><i><EFBFBD> Copyright Paul Mensonides 2002<br>
</i><i><EFBFBD> Copyright Edward Diener 2011,2013</i><br>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_REVERSE</b>
macro reverses a <i>tuple</i>. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_TUPLE_REVERSE</b>(<i>tuple</i>) <a
href="file:///E:/Programming/VersionControl/modular-boost/libs/preprocessor/doc/topics/variadic_macros.html#VNotation"
target="_self"><sup>(v)</sup></a><br>
<br>
or<br>
<br>
<b>BOOST_PP_TUPLE_REVERSE</b>(<i>size</i>, <i>tuple</i>) <a
href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
</div>
<h4>Arguments</h4>
<dl>
<dt>size</dt>
<dd> The size of the <i>tuple</i> to be reversed.&nbsp; The
argument is ignored.<br>
</dd>
<dd> The <i>tuple</i> to be reversed. </dd>
</dl>
<h4>Remarks</h4>
<div>You can
invoke the variadic macro <a
href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a>
as BOOST_PP_TUPLE_REVERSE(<i>tuple</i>) or
BOOST_PP_TUPLE_REVERSE(<i>size</i>,<i>tuple</i>) for backward
compatibility.<br>
</div>
<h4>See Also</h4>
<ul>
<li><a href="limit_tuple.html">BOOST_PP_LIMIT_TUPLE</a></li>
</ul>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/tuple/reverse.html">&lt;boost/preprocessor/tuple/reverse.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/tuple/reverse.html">boost/preprocessor/tuple/reverse.hpp</a>&gt;<br><br><a href="tuple_reverse.html">BOOST_PP_TUPLE_REVERSE</a>((x, y, z)) // expands to (z, y, x)<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright <a
href="http://www.housemarque.com" target="_top">Housemarque Oy</a>
2002</i> <br>
<i><EFBFBD> Copyright Paul Mensonides 2002<br>
</i><i><EFBFBD> Copyright Edward Diener 2011,2013,2020</i><br>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version
1.0. (See accompanying file <a
href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>
</html>

View File

@ -1,50 +1,57 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>BOOST_PP_TUPLE_TO_ARRAY</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
<title>BOOST_PP_TUPLE_TO_ARRAY</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_TO_ARRAY</b>
macro
converts a <i>tuple</i> to an <i>array</i>. </div>
<h4> Usage </h4>
<div class="code"> <b>BOOST_PP_TUPLE_TO_ARRAY</b>(<i>size,tuple</i>)<br>
<br>
or<br>
<br>
<b>BOOST_PP_TUPLE_TO_ARRAY</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
</div>
<h4> Arguments </h4>
<dl>
<dt>size</dt>
<dd> The size of the <i>tuple</i>.&nbsp; Valid <i>tuple</i> sizes
range from <i>1</i> to <b>BOOST_PP_LIMIT_TUPLE</b>. <br>
</dd>
<dt>tuple</dt>
<dd> The <i>tuple</i> to be converted.</dd>
</dl>
<h4>Remarks</h4>
<div>
The <i>size</i> argument must be the actual size of the <i>tuple</i>.<br>
<br>
You can
invoke the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a> as BOOST_PP_TUPLE_TO_ARRAY(<i>tuple</i>) or
BOOST_PP_TUPLE_TO_ARRAY(<i>size</i>,<i>tuple</i>).<a href="../headers/seq/to_array.html"></a>
</div>
<h4> Requirements </h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/tuple/to_array.html">&lt;boost/preprocessor/tuple/to_array.hpp&gt;</a>
</div>
<h4> Sample Code </h4>
<div>
<pre>#include &lt;<a href="../headers/tuple/to_array.html">boost/preprocessor/tuple/to_array.hpp</a>&gt;<br><br>#define TUPLE (a,b,c)<br><br><a href="tuple_to_array.html">BOOST_PP_TUPLE_TO_ARRAY</a>(3,TUPLE) // expands to (3, (a, b, c))<br><br>// or for the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br><br><a href="tuple_to_array.html">BOOST_PP_TUPLE_TO_ARRAY</a>(TUPLE) // expands to (3, (a, b, c))<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2011,2013</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0.
(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_TO_ARRAY</b>
macro
converts a <i>tuple</i> to an <i>array</i>. </div>
<h4> Usage </h4>
<div class="code"> <b>BOOST_PP_TUPLE_TO_ARRAY</b>(<i>tuple</i>) <a
href="file:///E:/Programming/VersionControl/modular-boost/libs/preprocessor/doc/topics/variadic_macros.html#VNotation"
target="_self"><sup>(v)</sup></a><br>
<br>
or<br>
<br>
<b>BOOST_PP_TUPLE_TO_ARRAY</b>(<i>size,tuple</i>) <a
href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
</div>
<h4> Arguments </h4>
<dl>
<dt>size</dt>
<dd> The size of the <i>tuple</i>.&nbsp; The argument is ignored.<br>
</dd>
<dt>tuple</dt>
<dd> The <i>tuple</i> to be converted.</dd>
</dl>
<h4>Remarks</h4>
<div>You can
invoke the variadic macro <a
href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a>
as BOOST_PP_TUPLE_TO_ARRAY(<i>tuple</i>) or
BOOST_PP_TUPLE_TO_ARRAY(<i>size</i>,<i>tuple</i>) for backward
compatibility.
</div>
<h4> Requirements </h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/tuple/to_array.html">&lt;boost/preprocessor/tuple/to_array.hpp&gt;</a>
</div>
<h4> Sample Code </h4>
<div>
<pre>#include &lt;<a href="../headers/tuple/to_array.html">boost/preprocessor/tuple/to_array.hpp</a>&gt;<br><br>#define TUPLE (a,b,c)<br><br><a href="tuple_to_array.html">BOOST_PP_TUPLE_TO_ARRAY</a>(TUPLE) // expands to (3, (a, b, c))<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener
2011,2013,2020</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version
1.0.
(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>
</html>

View File

@ -1,60 +1,64 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
<title>BOOST_PP_TUPLE_TO_LIST</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_TUPLE_TO_LIST</b> macro converts a <i>tuple</i> to a <i>list</i>.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_TUPLE_TO_LIST</b>(<i>size</i>, <i>tuple</i>)<br>
<br>
or<br>
<br>
<b>BOOST_PP_TUPLE_TO_LIST</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
</div>
<h4>Arguments</h4>
<dl>
<dt>size</dt>
<dd>
The size of the <i>tuple</i> to be converted.&nbsp;
Valid <i>tuple</i> sizes range from <i>1</i> to <b>BOOST_PP_LIMIT_TUPLE</b>.&nbsp;
</dd>
<dt>tuple</dt>
<dd>
The <i>tuple</i> to be converted.
</dd>
</dl>
<h4>Remarks</h4>
<div>
The <i>size</i> argument must be the actual size of the <i>tuple</i>.<br>
<br>
You can
invoke the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a> as BOOST_PP_TUPLE_TO_LIST(<i>tuple</i>) or
BOOST_PP_TUPLE_TO_LIST(<i>size</i>,<i>tuple</i>).<br>
</div>
<h4>See Also</h4>
<ul>
<li><a href="limit_tuple.html">BOOST_PP_LIMIT_TUPLE</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/tuple/to_list.html">&lt;boost/preprocessor/tuple/to_list.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>#include &lt;<a href="../headers/tuple/to_list.html">boost/preprocessor/tuple/to_list.hpp</a>&gt;<br><br><a href="tuple_to_list.html">BOOST_PP_TUPLE_TO_LIST</a>(3, (x, y, z))<br> // expands to (x, (y, (z, <a href="nil.html">BOOST_PP_NIL</a>)))<br><br>// or for the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br><br><a href="tuple_to_list.html">BOOST_PP_TUPLE_TO_LIST</a>((x, y, z))<br> // expands to (x, (y, (z, <a href="nil.html">BOOST_PP_NIL</a>)))<br></pre></div>
<hr size="1">
<div style="margin-left: 0px;">
<i><EFBFBD> Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
<br><i><EFBFBD> Copyright Paul Mensonides 2002<br>
</i><i><EFBFBD> Copyright Edward Diener 2011,2013</i><br>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_TO_LIST</b>
macro converts a <i>tuple</i> to a <i>list</i>. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_TUPLE_TO_LIST</b>(<i>tuple</i>) <a
href="file:///E:/Programming/VersionControl/modular-boost/libs/preprocessor/doc/topics/variadic_macros.html#VNotation"
target="_self"><sup>(v)</sup></a><br>
<br>
or<br>
<br>
<b>BOOST_PP_TUPLE_TO_LIST</b>(<i>size</i>, <i>tuple</i>) <a
href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
</div>
<h4>Arguments</h4>
<dl>
<dt>size</dt>
<dd> The size of the <i>tuple</i> to be converted.&nbsp; The
argument is ignored.<br>
</dd>
<dt>tuple</dt>
<dd> The <i>tuple</i> to be converted. </dd>
</dl>
<h4>Remarks</h4>
<div>You can
invoke the variadic maco <a
href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a>
as BOOST_PP_TUPLE_TO_LIST(<i>tuple</i>) or
BOOST_PP_TUPLE_TO_LIST(<i>size</i>,<i>tuple</i>) for backward
compatibility.<br>
</div>
<h4>See Also</h4>
<ul>
<li><a href="limit_tuple.html">BOOST_PP_LIMIT_TUPLE</a></li>
</ul>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/tuple/to_list.html">&lt;boost/preprocessor/tuple/to_list.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/tuple/to_list.html">boost/preprocessor/tuple/to_list.hpp</a>&gt;<br><br><a href="tuple_to_list.html">BOOST_PP_TUPLE_TO_LIST</a>((x, y, z))<br> // expands to (x, (y, (z, <a href="nil.html">BOOST_PP_NIL</a>)))<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright <a
href="http://www.housemarque.com" target="_top">Housemarque Oy</a>
2002</i> <br>
<i><EFBFBD> Copyright Paul Mensonides 2002<br>
</i><i><EFBFBD> Copyright Edward Diener 2011,2013,2020</i><br>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version
1.0. (See accompanying file <a
href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>
</html>

View File

@ -1,51 +1,61 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
<title>BOOST_PP_TUPLE_TO_SEQ</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_TO_SEQ</b> macro
converts a <i>tuple</i> to an <i>seq</i>. </div>
<h4> Usage </h4>
<div class="code"> <b>BOOST_PP_TUPLE_TO_SEQ</b>(<i>size</i>, <i>tuple</i>)<br>
<br>
or<br>
<br>
<b>BOOST_PP_TUPLE_TO_SEQ</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
</div>
<h4> Arguments </h4>
<dl>
<dt>size</dt>
<dd>
The size of the <i>tuple</i> to be converted.&nbsp;
Valid <i>tuple</i> sizes range from <i>1</i> to <b>BOOST_PP_LIMIT_TUPLE</b>.&nbsp; </dd>
<dt>tuple</dt>
<dd> The <i>tuple</i> to be converted. </dd>
</dl>
<h4>Remarks</h4>
<div> The <i>size</i> argument must be the actual size of the <i>tuple</i>.<br>
<br>
You can
invoke the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a> as BOOST_PP_TUPLE_TO_SEQ(<i>tuple</i>) or
BOOST_PP_TUPLE_TO_SEQ(<i>size</i>,<i>tuple</i>).<a href="../headers/tuple/to_seq.html"></a>
</div>
<h4>Requirements </h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/tuple/to_seq.html">&lt;boost/preprocessor/tuple/to_seq.hpp&gt;</a>
</div>
<h4> Sample Code </h4>
<div>
<pre>#include &lt;<a href="../headers/tuple/to_seq.html">boost/preprocessor/tuple/to_seq.hpp</a>&gt;<br><br><a href="tuple_to_seq.html">BOOST_PP_TUPLE_TO_SEQ</a>(3, (a, b, c)) // expands to (a)(b)(c)<br><br>// or for the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br><br><a href="tuple_to_seq.html">BOOST_PP_TUPLE_TO_SEQ</a>((a, b, c)) // expands to (a)(b)(c)<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
<br>
<i><EFBFBD> Copyright Paul Mensonides 2002<br>
</i><i><EFBFBD> Copyright Edward Diener 2011,2013</i><br>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0.
(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_TO_SEQ</b>
macro
converts a <i>tuple</i> to an <i>seq</i>. </div>
<h4> Usage </h4>
<div class="code"> <b>BOOST_PP_TUPLE_TO_SEQ</b>(<i>tuple</i>) <a
href="file:///E:/Programming/VersionControl/modular-boost/libs/preprocessor/doc/topics/variadic_macros.html#VNotation"
target="_self"><sup>(v)</sup></a><br>
<br>
or<br>
<br>
<b>BOOST_PP_TUPLE_TO_SEQ</b>(<i>size</i>, <i>tuple</i>) <a
href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
</div>
<h4> Arguments </h4>
<dl>
<dt>size</dt>
<dd> The size of the <i>tuple</i> to be converted. The argument
is ignored. &nbsp; </dd>
<dt>tuple</dt>
<dd> The <i>tuple</i> to be converted. </dd>
</dl>
<h4>Remarks</h4>
<div>You can
invoke the variadic macro <a
href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a>
as BOOST_PP_TUPLE_TO_SEQ(<i>tuple</i>) or
BOOST_PP_TUPLE_TO_SEQ(<i>size</i>,<i>tuple</i>) for backward
compatibility.
</div>
<h4>Requirements </h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/tuple/to_seq.html">&lt;boost/preprocessor/tuple/to_seq.hpp&gt;</a>
</div>
<h4> Sample Code </h4>
<div>
<pre>#include &lt;<a href="../headers/tuple/to_seq.html">boost/preprocessor/tuple/to_seq.hpp</a>&gt;<br><br><a href="tuple_to_seq.html">BOOST_PP_TUPLE_TO_SEQ</a>((a, b, c)) // expands to (a)(b)(c)<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright <a
href="http://www.housemarque.com" target="_top">Housemarque Oy</a>
2002</i>
<br>
<i><EFBFBD> Copyright Paul Mensonides 2002<br>
</i><i><EFBFBD> Copyright Edward Diener 2011,2013,2020</i><br>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version
1.0.
(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>
</html>

124
doc/ref/va_opt.html Normal file
View File

@ -0,0 +1,124 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;
charset=windows-1252">
<title>BOOST_PP_VA_OPT</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_VA_OPT</b> variadic
macro is a more flexible alternative to the C++20 __VA_OPT__
construct. It expands to either one of two inputs depending on
whether the variadic data is empty or not, whereas the C++20
__VA_OPT__ constructs expands to either its input or nothing
depending on whether the variadic data is empty or not. This macro
only exists when the compilation is at the C++20 level and the
__VA_OPT__ construct is supported.</div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_VA_OPT</b>(x,y,<i>...</i>) <a
href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
</div>
<h4>Arguments</h4>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A tuple
whose data is the macro expansion if the <i>variadic data</i> is
<b>not</b> empty<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; y<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A tuple
whose data is the macro expansion if the <i>variadic data</i> is
empty<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,,,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The <i>variadic
data</i> to be checked for emptiness<br>
</p>
<dl>
</dl>
<h4>Remarks</h4>
<div> When the macro invocation BOOST_PP_VARIADIC_HAS_OPT() expands
to 1, then this macro exists and can be invoked, otherwise this
macro does not exist and attempting to invoke it will lead to a
preprocessor error that the macro can not be found. Because of
this condition the header file for including this macro includes
the header file for the BOOST_PP_VARIADIC_HAS_OPT macro.<br>
<br>
The difference between this macro and the __VA_OPT__ construct
illustrates a limitation of the latter construct with a trade off
of simpler syntax. The differences between the __VA_OPT__
construct and this macro are:<br>
<ul>
<li>The __VA_OPT__ construct offers a choice as its expansion
only between its input preprocessing tokens or nothing (
called a "single placemarker token" ) depending on whether the
implicit variadic data is empty or not. There is no way using
the __VA_OPT__ construct to specify any alternative but the
"single placemarker token" when the variadic data is empty
whereas any preprocessing tokens can be specified when the
variadic data is not empty. With the BOOST_PP_VA_OPT macro the
user can specify as its expansion preprocessing tokens both
when the variadic data is empty and when the variadic data is
not empty.</li>
<li>The __VA_OPT__ construct offers a simple syntax whereas this
macro is more verbose. The BOOST_PP_VA_OPT macro's first and
second parameters must be Boost PP tuples of data, in order to
expand to normal or variadic data, and the third parameter
must be the variadic data to check for emptiness, whereas the
__VA_OPT__ construct has an implied variadic data as
__VA_ARGS__ to check for emptiness and can specify its
expansion directly in terms of its input.</li>
<li>The __VA_OPT__ construct can only be specified in the
replacement list of some macro, whereas the BOOST_PP_VA_OPT
macro can be used both as an alternative to the __VA_OPT__
construct in the replacement list of some macro and anywhere
else a macro can be used.</li>
<li>It is impossible to have a left parenthesis '(' or a right
parenthesis ')' as preprocessing token data within the
__VA_OPT__ construct whereas both are possible as part of the
expanded data for the BOOST_PP_VA_OPT macro.<br>
</li>
</ul>
<br>
The exact BOOST_PP_VA_OPT equivalent to the construct of&nbsp;
'__VA_OPT__ ( pp-tokens )' in the replacement list of a macro is
'BOOST_PP_VA_OPT (( pp-tokens ),(),__VA_ARGS__)'.</div>
<h4>See Also</h4>
<ul>
<li><a href="variadic_has_opt.html">BOOST_PP_VARIADIC_HAS_OPT</a></li>
</ul>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a
href="../headers/facilities/va_opt.html">&lt;boost/preprocessor/facilities/va_opt.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/facilities/va_opt.html">boost/preprocessor/facilities/va_opt.hpp</a>&gt;
# if <a href="variadic_has_opt.html">BOOST_PP_VARIADIC_HAS_OPT</a>()
#define DATA
#define OBJECT OBJECT2
#define OBJECT2
#define FUNC(x) FUNC2(x)
#define FUNC2(x)
#define FUNC_GEN(x,y) (1,2,3)
<a href="va_opt.html">BOOST_PP_VA_OPT</a>((1),(2),DATA) // expands to 2
<a href="va_opt.html">BOOST_PP_VA_OPT</a>((3),(4),OBJECT) // expands to 4
<a href="va_opt.html">BOOST_PP_VA_OPT</a>((5),(6),FUNC(1)) // expands to 6
<a href="va_opt.html">BOOST_PP_VA_OPT</a>((7,8),(9,10),FUNC) // expands to 7,8
<a href="va_opt.html">BOOST_PP_VA_OPT</a>((1,2,3,4,5),(6,7,8,9,10),FUNC_GEN) // expands to 1,2,3,4,5
#endif
</pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2019</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version
1.0. (See accompanying file <a
href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

View File

@ -0,0 +1,63 @@
<html>
<head>
<title>BOOST_PP_VARIADIC_HAS_OPT</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_HAS_OPT</b> macro
determines whether or not the C++20 __VA_OPT__ construct is supported for the compiler's preprocessor being used.
Expands to 1 if the __VA_OPT__ construct is supported, otherwise expands to 0.
</div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_VARIADIC_HAS_OPT</b>() <br>
</div>
<h4>Arguments</h4>
<dl>
<dt>None<br>
</dt>
</dl>
<h4>Remarks</h4>
<div>
This macro only returns 1 if the compiler is compiling at its own C++20 level and
__VA_OPT__ is supported. It is possible for a compiler to support the __VA_OPT__
construct when not compiling at its own C++20 level, but this macro will return
0 in that case even if __VA_OPT__ is normally supported for that level. The reason
for this is that such a compiler may have a compiler switch, enforcing a strict
adherence to a particular C++ standard level, which gives a warning or an error
if __VA_OPT__ is specified below the C++20 level, and the preprocessor library
wants to avoid that happening. Therefore the macro will only test to see whether
or not __VA_OPT__ is supported at the C++20 level, while otherwise always returning
0 for all lesser C++ standard levels.
</div>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/variadic/has_opt.html">&lt;boost/preprocessor/variadic/has_opt.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>
#include &lt;<a href="../headers/variadic/has_opt.html">boost/preprocessor/variadic/has_opt.hpp</a>&gt;<br>
#if <a href="variadic_has_opt.html">BOOST_PP_VARIADIC_HAS_OPT</a>()
// Preprocessor code which uses __VA_OPT__
#else
// Preprocessor code which does not use __VA_OPT__
#endif
</pre>
<br>
or within a macro definition<br><br>
<pre>
#include &lt;boost/preprocessor/control/iif.hpp&gt;
#include &lt;<a href="../headers/variadic/has_opt.html">boost/preprocessor/variadic/has_opt.hpp</a>&gt;<br>
#define USE_OPT(...) BOOST_PP_IIF(<a href="variadic_has_opt.html">BOOST_PP_VARIADIC_HAS_OPT</a>(),MACRO_USING_OPT,MACRO_NOT_USING_OPT)(__VA_ARGS__)
#define MACRO_USING_OPT(...) __VA_OPT__( preprocessor tokens ) anything
#define MACRO_NOT_USING_OPT(...) anything
</pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2019</i> </div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0.
(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

View File

@ -1,33 +1,46 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>BOOST_PP_VARIADIC_SIZE</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_SIZE</b> variadic macro
expands to the size of the <i>variadic data </i>passed to it. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_VARIADIC_SIZE</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
</div>
<h4>Arguments</h4>
<dl>
<dt>...<br>
</dt>
<dd>&nbsp; <i>Variadic data </i>whose size is to be extracted. </dd>
</dl>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/variadic/size.html">&lt;boost/preprocessor/variadic/size.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/variadic/size.html">boost/preprocessor/variadic/size.hpp</a>&gt;<br><br>#define VAR_DATA x, y, z<br><br><a href="variadic_size.html">BOOST_PP_VARIADIC_SIZE</a>(VAR_DATA) // expands to 3<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2011,2013</i> </div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0.
(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
<title>BOOST_PP_VARIADIC_SIZE</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_SIZE</b>
variadic macro
expands to the size of the <i>variadic data </i>passed to it. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_VARIADIC_SIZE</b>(<i>...</i>) <a
href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
</div>
<h4>Arguments</h4>
<dl>
<dt>...<br>
</dt>
<dd>&nbsp; <i>Variadic data </i>whose size is to be extracted.</dd>
</dl>
<h4>Remarks</h4>
<p>&nbsp;&nbsp;&nbsp; In <a
href="../topics/variadic_macros.html#C20_Support_For_Variadic_Macros">C++
20</a> mode the <i>variadic</i> <i>data</i> can be empty and
the result will be 0.<br>
</p>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/variadic/size.html">&lt;boost/preprocessor/variadic/size.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/variadic/size.html">boost/preprocessor/variadic/size.hpp</a>&gt;<br><br>#define VAR_DATA x, y, z<br><br><a href="variadic_size.html">BOOST_PP_VARIADIC_SIZE</a>(VAR_DATA) // expands to 3<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener
2011,2013</i> </div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version
1.0.
(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

View File

@ -1,32 +1,45 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>BOOST_PP_VARIADIC_TO_ARRAY</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_TO_ARRAY</b> variadic macro
converts <i>variadic data</i> to an <i>array</i>. </div>
<h4> Usage </h4>
<div class="code"> <b>BOOST_PP_VARIADIC_TO_ARRAY</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
</div>
<h4> Arguments </h4>
<dl>
<dt>...</dt>
<dd> The <i>variadic data</i> to be converted. </dd>
</dl>
<h4> Requirements </h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/variadic/to_array.html">&lt;boost/preprocessor/variadic/to_array.hpp&gt;</a>
</div>
<h4> Sample Code </h4>
<div>
<pre>#include &lt;<a href="../headers/variadic/to_array.html">boost/preprocessor/variadic/to_array.hpp</a>&gt;<br><br>#define VAR_DATA a, b, c<br><br><a href="variadic_to_array.html">BOOST_PP_VARIADIC_TO_ARRAY</a>(VAR_DATA) // expands to (3, (a, b, c))<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2011,2013</i> </div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0.
(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
<title>BOOST_PP_VARIADIC_TO_ARRAY</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_TO_ARRAY</b>
variadic macro
converts <i>variadic data</i> to an <i>array</i>. </div>
<h4> Usage </h4>
<div class="code"> <b>BOOST_PP_VARIADIC_TO_ARRAY</b>(<i>...</i>) <a
href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
</div>
<h4> Arguments </h4>
<dl>
<dt>...</dt>
<dd> The <i>variadic data</i> to be converted.</dd>
</dl>
<h4>Remarks</h4>
<p>&nbsp;&nbsp;&nbsp; In <a
href="file:///E:/Programming/VersionControl/modular-boost/libs/preprocessor/doc/topics/variadic_macros.html#C20_Support_For_Variadic_Macros">C++
20</a> mode the <i>variadic</i> <i>data</i> can be empty and
the result will be an empty array of the form '(0,())'.</p>
<h4> Requirements </h4>
<div> <b>Header:</b> &nbsp;<a
href="../headers/variadic/to_array.html">&lt;boost/preprocessor/variadic/to_array.hpp&gt;</a>
</div>
<h4> Sample Code </h4>
<div>
<pre>#include &lt;<a href="../headers/variadic/to_array.html">boost/preprocessor/variadic/to_array.hpp</a>&gt;<br><br>#define VAR_DATA a, b, c<br><br><a href="variadic_to_array.html">BOOST_PP_VARIADIC_TO_ARRAY</a>(VAR_DATA) // expands to (3, (a, b, c))<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener
2011,2013</i> </div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version
1.0.
(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

View File

@ -1,31 +1,45 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>BOOST_PP_VARIADIC_TO_LIST</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_TO_LIST</b>
variadic macro converts <i>variadic data</i> to a <i>list</i>. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_VARIADIC_TO_LIST</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
</div>
<h4>Arguments</h4>
<dl><dt>...</dt>
<dd> The <i>variadic data</i> to be converted.<br>
</dd>
</dl><h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/variadic/to_list.html">&lt;boost/preprocessor/variadic/to_list.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/variadic/to_list.html">boost/preprocessor/variadic/to_list.hpp</a>&gt;<br><br><a href="variadic_to_list.html">BOOST_PP_VARIADIC_TO_LIST</a>(x, y, z)<br> // expands to (x, (y, (z, <a href="nil.html">BOOST_PP_NIL</a>)))<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2011,2013</i> </div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0.
(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
<title>BOOST_PP_VARIADIC_TO_LIST</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_TO_LIST</b>
variadic macro converts <i>variadic data</i> to a <i>list</i>. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_VARIADIC_TO_LIST</b>(<i>...</i>) <a
href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
</div>
<h4>Arguments</h4>
<dl>
<dt>...</dt>
<dd> The <i>variadic data</i> to be converted.<br>
</dd>
</dl>
<h4>Remarks</h4>
<p>&nbsp;&nbsp;&nbsp; In <a
href="file:///E:/Programming/VersionControl/modular-boost/libs/preprocessor/doc/topics/variadic_macros.html#C20_Support_For_Variadic_Macros">C++
20</a> mode the <i>variadic</i> <i>data</i> can be empty and
the result will be an empty list of the form 'BOOST_PP_NIL'.</p>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a
href="../headers/variadic/to_list.html">&lt;boost/preprocessor/variadic/to_list.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/variadic/to_list.html">boost/preprocessor/variadic/to_list.hpp</a>&gt;<br><br><a href="variadic_to_list.html">BOOST_PP_VARIADIC_TO_LIST</a>(x, y, z)<br> // expands to (x, (y, (z, <a href="nil.html">BOOST_PP_NIL</a>)))<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener
2011,2013</i> </div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version
1.0.
(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

View File

@ -9,18 +9,15 @@
<h4>Usage</h4>
<div class="code"><b>BOOST_PP_VARIADICS</b><br>
</div><b>Remarks</b>
<div> The macro is an <i>object-like</i> macro. It is used in internal
code to check for the presence of variadic macro support. It can be
used by the end-user for the same purpose. The macro equals 1 if
variadic macros are supported and 0 if they are not. </div><b>Requirements</b>
<div> The macro is an <i>object-like</i> macro, but has been deprecated. It was used in internal
code to check for the presence of variadic macro support, but now is no longer used as it is always
assumed that variadic macro support from the compiler is present. The value is always set to 1
for backward compatibility, but no longer used internally in the library.
</div><b>Requirements</b>
<div> <b>Header:</b> &nbsp;<a href="../headers/config/variadics.html">&lt;boost/preprocessor/config/config.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/config/variadics.html">boost/preprocessor/config/config.hpp</a>&gt;<br><br>#if <a href="variadics.html">BOOST_PP_VARIADICS</a><br>#define SOME_MACRO(...) // replacement list<br>#else<br>#define SOME_MACRO(param1,param2) // replacement list<br>#endif<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2011,2014</i> </div>
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2011,2014,2020</i> </div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0.
(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>

View File

@ -12,12 +12,12 @@
<ul>
<li><a href="add_d.html"><span style="color: gray;">BOOST_PP_ADD_D</span></a></li>
<li><a href="div_d.html"><span style=" color: gray;">BOOST_PP_DIV_D</span></a></li>
<li><a href="file:///C:/Programming/VersionControl/modular-boost/libs/preprocessor/doc/ref/div_d.html"><span
<li><a href="div_d.html"><span
style=" color: gray;"></span></a><a href="mod_d.html"><span style=" color: gray;">BOOST_PP_MOD_D</span></a></li>
<li><a href="file:///C:/Programming/VersionControl/modular-boost/libs/preprocessor/doc/ref/mod_d.html"><span
<li><a href="mod_d.html"><span
style=" color: gray;"></span></a><a href="mul_d.html"><span
style=" color: gray;">BOOST_PP_MUL_D</span></a></li>
<li><a href="file:///C:/Programming/VersionControl/modular-boost/libs/preprocessor/doc/ref/mul_d.html"><span
<li><a href="mul_d.html"><span
style=" color: gray;"></span></a><a href="sub_d.html"><span
style=" color: gray;">BOOST_PP_SUB_D</span></a></li>
</ul>

View File

@ -284,6 +284,7 @@
<!-- V -->
<br>BOOST_PP_VALUE
<br>BOOST_PP_VARIADIC_ELEM
<br>BOOST_PP_VARIADIC_HAS_OPT
<br>BOOST_PP_VARIADIC_SIZE
<br>BOOST_PP_VARIADIC_TO_ARRAY
<br>BOOST_PP_VARIADIC_TO_LIST

View File

@ -1,23 +1,35 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<meta content="text/html; charset=windows-1252"
http-equiv="content-type">
<title>title.html</title>
<link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
<h4>Introduction</h4>
<div> The Boost Preprocessing library is a library of macros, with support
for preprocessor metaprogramming. The library supports both C++ and C
compilation. It does not depend on any other Boost libraries and therefore
may be used as a standalone library. </div>
<div> An excerpt from <i>C++ Template Metaprogramming: Concepts, Tools, and
Techniques from Boost and Beyond</i> by Dave Abrahams and Aleksey
Gurtovoy has been made <a href="AppendixA-AnIntroductiontoPreprocessorMetaprogramming.html"
target="_top"><font color="blue"><b><u><i>available</i></u></b></font></a>.
This excerpt contains a basic introduction to the Preprocessor library and
preprocessor metaprogramming which may help users new to the library and
users interested in seeing some of the facilities offered by the library.
<div> The Boost Preprocessing library is a library of macros, with
support for preprocessor metaprogramming. The library supports
both C++ and C compilation. It does not depend on any other Boost
libraries and therefore may be used as a standalone library.<br>
</div>
<div>The library requires that the compiler supports <a
href="topics/variadic_macros.html">variadic macros</a>. Since
variadic macros are a C99 or C++11 feature the library ostensibly
requires at least compilation at those C or C++ standard levels. A
number of compilers support variadic macros at a lower level, so
it still may be possible using the library at that compilation
level, as long as strict C++98/C++03 compliance is not enforced.<br>
</div>
<div> An excerpt from <i>C++ Template Metaprogramming: Concepts,
Tools, and Techniques from Boost and Beyond</i> by Dave Abrahams
and Aleksey Gurtovoy has been made <a
href="AppendixA-AnIntroductiontoPreprocessorMetaprogramming.html"
target="_top"><font color="blue"><b><u><i>available</i></u></b></font></a>.
This excerpt contains a basic introduction to the Preprocessor
library and preprocessor metaprogramming which may help users new
to the library and users interested in seeing some of the
facilities offered by the library. </div>
<!--
<EFBFBD> Copyright Housemarque Oy 2002<30> Copyright Paul Mensonides 2002Distributed 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)-->

View File

@ -15,10 +15,13 @@
<li><a href="topics/file_iteration.html">file iteration</a></li>
<li><a href="topics/evaluated_slots.html">evaluated slots</a></li>
<li><a href="topics/variadic_macros.html">variadic macros</a></li>
<li><a href="topics/emptiness.html">emptiness</a></li>
<li><a href="topics/limitations.html">limitations</a></li>
</ul>
<!--
<EFBFBD> Copyright Housemarque Oy 2002
<EFBFBD> Copyright Paul Mensonides 2002
<EFBFBD> Copyright Edward Diener 2020
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)

209
doc/topics/emptiness.html Normal file
View File

@ -0,0 +1,209 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=windows-1252"
http-equiv="content-type">
<title>emptiness.html</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
<style>
u { font-weight: normal; text-decoration: none; }
</style>
</head>
<body>
<h4>Passing nothing</h4>
<div> Although rarely desirable it has always been legal in C++ to
pass nothing, aka no preprocessor tokens, as an argument when
invoking a macro, whether the equivalent parameter be a regular
parameter or a variadic one. </div>
<div class="code">
<pre> #define SOME_MACRO(Parameter1,Parameter2) macro expansion using Parameter1 and Parameter2
#define SOME_VARIADIC_MACRO(Parameter1,...) macro expansion using Parameter1 and __VA_ARGS__
SOME_MACRO(a,b) // Normal
SOME_MACRO(a,) // Legal, second argument is empty
SOME_MACRO(,b) // Legal, first argument is empty
SOME_MACRO(a) // Preprocessor error, passing the wrong number of arguments
SOME_VARIADIC_MACRO(a,b,c,d) // Normal
SOME_VARIADIC_MACRO(a,) // Legal, variadic argument is empty
SOME_VARIADIC_MACRO(,b,c,d) // Legal, first argument is empty
SOME_VARIADIC_MACRO(a) /* Preprocessor error in standard below C++20 level,
but in C++20 exactly equivalent to SOME_VARIADIC_MACRO(a,) */</pre>
</div>
<h4>Expanding to nothing</h4>
<div> Given certain arguments a macro might expand to nothing, aka
no preprocessor tokens. This may happen more than in the previous
case of an argument to a macro being nothing because the expansion
of a macro is often used to initialize some C++ construct, and C++
has some places where a part of a compile-time construct can be
empty. However a macro which expands to nothing rarely occurs when
that macro's expansion is used as an argument to another macro
because we would again have a macro where we are passing nothing
as an argument. </div>
<div class="code">
<pre> #define ANOTHER_MACRO(Parameter1,Parameter2) /* expands to nothing when Parameter1 and Parameter2
are numbers, otherwise expands to some preprocessing
token, such as '1' */
int another_int = { ANOTHER_MACRO(x,y) }; // ANOTHER_MACRO Expands to 1
int some_int = { ANOTHER_MACRO(1,2) }; // ANOTHER_MACRO Expands to nothing
SOME_MACRO(ANOTHER_MACRO(x,y),z) // Normal, ANOTHER_MACRO Expands to 1
SOME_MACRO(ANOTHER_MACRO(1,2),z) // Legal, first argument is empty as ANOTHER_MACRO Expands to nothing</pre>
</div>
<h4>Emptiness defined</h4>
<div> Passing nothing as a macro argument or a macro expanding to
nothing I term as 'emptiness', as 'nothing' is too amorphous a
term which can be used in too many other contexts for my liking.
In the vast majority of cases when designing a macro for use
emptiness is not a part of such a design, and passing emptiness as
an argument or expanding to emptiness is not anything that someone
writing a macro takes into account when he explains to other
programmers how a macro should be used.<br>
<br>
Other than the fact that macros are generally created so that some
actual preprocessor data of a particular kind needs to be passed
as arguments or gets generated as part of macro expansion when a
macro is invoked, there is another very good reason why working
with emptiness is not part of a macro's design: there has been no
perfectly fail-safe way to test for emptiness during macro
expansion, whether it be in creating macros using just the
facilities of the C++ standard or using a 3rd party library, such
as this Boost preprocessor library. When I say 'fail-safe' I mean
that there has always been some argument input, no matter how
small the number of potential cases, where a macro designed to
test whether or not the preprocessor data passed to it as an
argument when the macro is invoked is actually empty fails in some
way, with the failure normally occurring as a preprocessor error.<br>
<br>
Of course this does not mean that the best macro designed to test
for emptiness will not work correctly the vast majority of the
time. It only means that there has been no guarantee that such a
macro will work correctly all 100% of the time. Nonetheless there
have been uses of testing for emptiness, when a macro documents
what a particular argument should generally consist of, even if
the test is not guaranteed to work 100% of the time if particular
unexpected argument data does get passed. </div>
<h4>A C++20 solution for testing for emptiness</h4>
<div> The C++ standard committee recognized, in the upcoming
specification for the C++20 standard, that a way of testing
whether variadic data is empty or not in the expansion of a
variadic macro would be very useful when designing certain types
of macros. Because of this the C++20 standard added a preprocessor
construct which could do this in a certain way for variadic data
in the expansion of a variadic macro. The construct is called
__VA_OPT__, as in '__VA_OPT__ ( prepocessing tokens )' specified
in the replacement list of a variadic macro. <br>
<br>
The way that the __VA_OPT__ constructs works is that if the
variadic arguments to the variadic macro are empty or expand to
emptiness then the __VA_OPT__ construct and its enclosed
preprocessing token data expands to nothing, or in C++ terms "a
single placemarker preprocessing token". Otherwise the __VA_OPT__
construct expands to its enclosed preprocessing tokens. A further,
possibly unintended, upshot of adding the __VA_OPT__ construct to
C++20 is that it is now possible to create a variadic macro which
is 100% reliable in testing for emptiness whenever a compiler
supports the __VA_OPT__ construct in its compilation of
preprocessor code.<br>
<br>
For such a macro to always work which tests for emptiness the code
must know when the __VA_OPT__ construct is available. It is not
enough to know that a compiler is working at the C++20 level,
since as all C++ programmers know an adherence to a C++ standard
level never guarantees that a particular compiler supports every
aspect of that level. Happily there is a way to test whether a
compiler supports the __VA_OPT__ construct as long as the compiler
supports variadic macros, and that way has been openly published
on the Internet, although the actual macro code would not have
been hard to create even if it had not publicly appeared. This
library uses that code to test for __VA_OPT__ as a necessary
prelude for creating a variadic macro which is 100% reliable in
testing for emptiness.<br>
<br>
The Boost Preprocessor macro for testing whether the __VA_OPT__
construct is supported during compilation is called
BOOST_PP_VARIADIC_HAS_OPT, which is a function-like macro taking
no parameters and returning 1 if the __VA_OPT__ construct is
supported and 0 if it is not. The macro only returns 1 when
the compiler is at the C++20 level, and when the __VA_OPT__ construct
can be used according to the C++20 standard. In particular the macro
needs the compiler to be working at the C++20 level despite the fact
that at least one major compiler supports the __VA_OPT__ construct in
some of its latest releases even when the compiler is being used at a
C++ standard level below that of C++20. The reason this Boost
preprocessor library requires the C++20 level is because that same
major compiler can produce a warning, or even an error, when it
even sees a macro using the __VA_OPT__ construct at a level below
C++20, even though it supports it, if other compiler options
requiring strict adherence to the level of the C++ standard being
used are passed on the command line. So taking a conservative
approach the BOOST_PP_VARIADIC_HAS_OPT macros requires compilation
at the C++20 level, along with the testing code expanding to 1,
in order to specify that __VA_OPT__ is supported.<br>
<br>
The actual Boost Preprocessor library for testing for emptiness in
C++20 mode is called BOOST_PP_CHECK_EMPTY. The macro is a variadic
macro with a single variadic parameter. The macro only exists if
our previous macro for testing for __VA_OPT__, called
BOOST_PP_VARIADIC_HAS_OPT, expands to 1 when invoked as
BOOST_PP_VARIADIC_HAS_OPT(). If BOOST_PP_VARIADIC_HAS_OPT()
expands to 0 the BOOST_PP_CHECK_EMPTY macro does not exist at all
in this library. The input to the BOOST_PP_CHECK_EMPTY macro can
be any variadic data. If the data passed to the macro is empty, or
if the data passed to the macro is not empty but when the data
itself is expanded it is empty, the macro returns 1, otherwise it
returns 0. The macro works 100% of the time and is completely
reliable no matter what preprocessor data is passed to it. But of
course it only works when compiling at the C++20 level with the
__VA_OPT__ construct supported by the compiler. It solves an old
problem that it has never been possible, prior to C++20, to
provide a 100% reliable implementation of a macro which tests for
emptiness in C++.<br>
<br>
Along with the valuable BOOST_PP_CHECK_EMPTY macro the Boost
Preprocessor library has also added a more flexible, if slightly
verbose, alternative to the __VA_OPT__ construct, which works by
using the ability of BOOST_PP_CHECK_EMPTY to reliably test for
emptiness. This macro is called BOOST_PP_VA_OPT and allows the
programmer to specify preprocessing tokens for expansion both when
the variadic data is <b>not</b> empty and when the variadic data
is empty. This improves on the __VA_OPT__ construct's ability to
specify preprocessing tokens for expansion only when the variadic
data is not empty. Like BOOST_PP_CHECK_EMPTY, which it uses, the
BOOST_PP_VA_OPT macro only exists when BOOST_PP_VARIADIC_HAS_OPT()
expands to 1. You can read further about how this macro works as
an alternative to the C++20 __VA_OPT__ construct in the
documentation for the macro itself.<br>
<br>
Eventually more C++ compilers will support C++20 and the
__VA_OPT__ construct and more programmers will use compilers at
the C++20 level. At that point the macro BOOST_PP_CHECK_EMPTY can
be used reliably for testing emptiness in preprocessor data in
macro code by all those programmers. The BOOST_PP_VA_OPT macro
serves as a useful example of such use. This does not mean that
designing macros with emptiness in mind needs to be done, much
less considered, but that the possibility of doing so with
complete reliability will be there if needed by the macro
programmer. Along with the __VA_OPT__ construct as mandated by the
C++20 standard the BOOST_PP_CHECK_EMPTY and BOOST_PP_VA_OPT macros
add three more tools in the arsenal of macro programming, which is
a good thing, while programmers who wanted to ignore any dealing
with emptiness in macro code can continue to do so. </div>
<b>See</b> <b>Also</b><br>
<ul>
<li><a href="../ref/variadic_has_opt.html">BOOST_PP_VARIADIC_HAS_OPT</a></li>
<li><a href="../ref/check_empty.html">BOOST_PP_CHECK_EMPTY</a></li>
<li><a href="../ref/va_opt.html">BOOST_PP_VA_OPT</a><br>
</li>
</ul>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2019</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version
1.0. (See accompanying file <a
href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

View File

@ -364,8 +364,8 @@ typedef TYPELIST((int, double, incomplete&lt;void&gt;)) xyz;
<div>
There are two minor caveats with this result.&nbsp; First, certain types like <code>void</code>
can't be the type of an argument, so they have to be wrapped with <code>incomplete&lt;T&gt;</code>.&nbsp;
Second, the necessary double parenthesis is annoying.&nbsp; If and when C++
gets C99's variadic macros, <code>TYPELIST</code> can be redefined:
Second, the necessary double parenthesis is annoying.&nbsp; With variadic macros,
<code>TYPELIST</code> can be redefined:
</div>
<div class="code">
<pre>

319
doc/topics/limitations.html Normal file
View File

@ -0,0 +1,319 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=windows-1252"
http-equiv="content-type">
<title>limitations.html</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
<style>
u { font-weight: normal; text-decoration: none; }
</style>
</head>
<body>
<h3>Preprocessor library limitations</h3>
<blockquote>
<p>The Boost preprocessor library has always had certain specific
limitations, which are specifically explained in other areas of
this documentation and are implemented as object-like macros in
the header file config/limits.hpp. These limitations largely
detail the maximum number for certain features in the library.
These maximums have been chosen in order to accommodate the
large number of compilers and their preprocessors which the
library supports, in order to provide a lowest common set of
limits with which the vast majority of these compilers can work
successfully. This reflects the situation that the C/C++
standard rarely specifies preprocessor limitations for compilers
but rather allows each compiler to choose whatever limitations
it deems necessary in its preprocessor. While this allows
individual compilers to largely choose what preprocessor
limitations it deems necessary, it makes it more difficult for a
preprocessor library like this one to work with a large number
of preprocessors across a number of operating system platforms.
The difficulty of this situation means that this Boost
preprocessor library has chosen fairly conservative limitations.<br>
</p>
<p>In fact the limitation macros, although indeed existing, have
never previously been used internally in the preprocessor
library code. Instead while the limitation macros do indeed
exist, the library has internally used fixed numbers equivalent
to what these macros represent. This historical situation most
probably reflects the fact that the library did not want the
end-user's possibly changing the limitations, by redefining the
macros in config/limits.hpp, to change how the library works and
therefore cause problems in using the library.<br>
</p>
<p>This situation has now changed and a number of the limitation
macros specified in config/limits.hpp are now used internally in
the library code when the preprocessor is C++ standard
conforming. This topic is therefore about how an end-user can
change the limitations of the library.<br>
</p>
</blockquote>
<h4>Type of limitations</h4>
<blockquote>
<p>The type of limitations in the Boost preprocessor library can
be divided as:<br>
</p>
<ul>
<li>Numbers</li>
<li>Sizes</li>
<li>Loops</li>
<li>Iterations</li>
</ul>
The library has support for numbers. This supports basic
arithmetic, comparisons, and logical operations. This support is
documented by the macro BOOST_PP_LIMIT_MAG, where 'MAG' is short
for "MAGNITUDE'. The current fixed maximum value is 256. This
means that the library supports numerical operations in the range
between 0 and 256.<br>
<br>
The library has support for the maximum sizes of higher level
types. These types are arrays, lists, seqs, tuples, and variadic
data. By sizes for these higher level constructs it is meant the
maximum number of elements of which a higher level construct can
consist. For arrays and tuples this value is documented by the
macro BOOST_PP_LIMIT_TUPLE while for variadic data this value is
documented by the macro BOOST_PP_LIMIT_VARIADIC. In both these
cases the current fixed maximum value is 64. For seqs the value is
documented by the macro BOOST_PP_LIMIT_SEQ, whose current fixed
value is 256. For lists there has never been a limitation macro
but in actual fact the limitation on the maximum number of list
elements is defined by the maximum number given above for
BOOST_PP_LIMIT_MAG. So a list, like a seq, has a default maximum
of 256 elements. The reason that the maximum number of elements
for arrays, tuples, and variadic data is 64 while for seqs and
lists it is the much larger value of 256 is because the
implementation of the former constructs often involves passing the
likewise number as parameters to internal macros and a number of
compilers have placed limitations on the number of parameters a
macro can have; so the much safer 64 was chosen so as to be able
to work with these compilers.<br>
<br>
The looping constructs consist of the control structure
BOOST_PP_WHILE and the repetition constructs BOOST_PP_FOR and
BOOST_PP_REPEAT. Each of these have a limitation macro, all
currently set to 256. This means that the loop can run at maximum
256 times. The corresponding limitation macros are
BOOST_PP_LIMIT_WHILE, BOOST_PP_LIMIT_FOR, and
BOOST_PP_LIMIT_REPEAT.<br>
<br>
Iteration constructs consist of local iteration and file iteration
constructs.The specifics are more fully discussed in their own
topics. The corresponding macro is BOOST_PP_LIMIT_ITERATION whose
value is 256.<br>
</blockquote>
<h4> Limitation dependencies</h4>
<blockquote>A number of the limitations are actually dependent on
other limitations. These are:<br>
<ul>
<li>BOOST_PP_LIMIT_MAG depends on BOOST_PP_LIMIT_WHILE. All the
arithmetic macros except for BOOST_PP_INC and BOOST_PP_DEC
depend on looping using BOOST_PP_WHILE. Similarly all the
comparison macros except for BOOST_PP_EQUAL and
BOOST_PP_NOT_EQUAL depend on BOOST_PP_WHILE. So whatever is
the value for BOOST_PP_LIMIT_MAG is also the value for
BOOST_PP_LIMIT_WHILE.</li>
<li>BOOST_PP_LIMIT_TUPLE depends on BOOST_PP_LIMIT_VARIADIC,
since array/tuple functionality often ends up calling variadic data
functionality. So while BOOST_PP_LIMIT_TUPLE can be smaller
than BOOST_PP_LIMIT_VARIADIC it can never be larger.<br>
</li>
<li>BOOST_PP_LIMIT_SEQ depends on BOOST_PP_LIMIT_MAG since the
total size of a seq must be at most the largest number. So
while BOOST_PP_LIMIT_SEQ could be smaller than
BOOST_PP_LIMIT_MAG it can never be larger.</li>
<li>BOOST_PP_LIMIT_FOR, BOOST_PP_LIMIT_REPEAT, and
BOOST_PP_LIMIT_ITERATION all depend on BOOST_PP_LIMIT_MAG.
While any of these values could be smaller than
BOOST_PP_LIMIT_MAG none of them can be larger.</li>
</ul>
</blockquote>
<h4>Changing the limitations</h4>
<blockquote>
<p>Limitations can be changed by the end-user defining a
limitation macro prior to including preprocessor library header
files. This can be done either in a source file or as part of a
compiler command line.<br>
</p>
</blockquote>
<blockquote>
<p>Before specifying which limitations can be changed a number of
items need to be emphasized:<br>
</p>
<ul>
<li>The limitations which can be changed can only be done for
C++ standard conforming preprocessors. You can use the macro
BOOST_PP_IS_STANDARD, invoking it as BOOST_PP_IS_STANDARD(),
to determine if your compiler has a C++ standard conforming
preprocessor. Almost all major compilers, including gcc and
clang, have C++ standard conforming preprocessors. Most
notably the default Visual C++ compiler is not a C++ standard
conforming preprocessor, but the new preprocessor for Visual
C++, available in Visual Studio 2019 and above, is a C++
standard conforming preprocessor. If you change a limitation
for a compiler that is not a C++ standard conforming
preprocessor the change is simply ignored and no preprocessor
error will occur. This is because any non-conforming
preprocessor does not actually include or use the macros in
the config/limits.hpp file.<br>
</li>
<li>WARNING ! WARNING ! WARNING ! Increasing limitations may
mean that preprocessors may fail because the compiler itself
can not handle the increase in the limitations. This may occur
because the compiler has an internal limit on the number of
parameters that can be passed to a macro, the number of nested
macro invocations, or even the amount of memory needed for the
preprocessor to expand a macro.</li>
<li>Except for possibly first including the preprocessor header
boost/preprocessor/config/config.hpp, changing any limitation
must be done before including Boost preprocessor headers in a
TU ( translation unit ) to work properly. Attempting to change
a limitation after including Boost preprocessor headers will
at worst lead to preprocessor errors and at best lead to UB (
undefined behavior ).</li>
<li>Limitations can only be changed to specific values as given
below. Attempting to change limitations to other than the
specific values will lead to the change being ignored or, if
incorrectly done after including Boost preprocessor headers, a
preprocessor error.</li>
</ul>
All the limitations whose default value is 256 can be changed to
either 512 or 1024, except for BOOST_PP_LIMIT_WHILE which can not
be changed.<br>
The two limitations whose default value is 64 can be changed to
128 or 256.<br>
<br>
For the individual limitations:<br>
<ul>
<li>BOOST_PP_LIMIT_MAG : When you change this limitation the
value of BOOST_PP_LIMIT_WHILE also changes so that it is equal
to BOOST_PP_LIMIT_MAG. This is because numerical computations
depend on the BOOST_PP_WHILE loop, and therefore
BOOST_PP_LIMIT_WHILE itself can not be changed. Also when you
change the BOOST_PP_LIMIT_MAG limitation the value of
BOOST_PP_LIMIT_SEQ, if it has not been also changed to be less
than BOOST_PP_LIMIT_MAG, is also changed to the value of
BOOST_PP_LIMIT_MAG. This is so that seqs, like lists, will
normally have the same maximum number of elements, as defined
by BOOST_PP_LIMIT_MAG, unless you decide otherwise and change
the BOOST_PP_LIMIT_SEQ&nbsp; yourself.<br>
</li>
<li>BOOST_PP_LIMIT_TUPLE: When you change this limitation the
value of BOOST_PP_LIMIT_VARIADIC also changes so that it is at
least equal to BOOST_PP_LIMIT_TUPLE if the value of
BOOST_PP_LIMIT_VARIADIC has not also been changed to be
greater than BOOST_PP_LIMIT_TUPLE. This is because
tuples/arrays depend on variadic functionality.</li>
<li>BOOST_PP_LIMIT_SEQ, BOOST_PP_LIMIT_FOR,
BOOST_PP_LIMIT_REPEAT, BOOST_PP_LIMIT_ITERATION: If you try to
set any of these values greater than the BOOST_PP_LIMIT_MAG
value, the particular limitation is set to equal the value of
BOOST_PP_LIMIT_MAG. This is because all of these limits depend
on the range of numerical values.</li>
</ul>
</blockquote>
<h4>Other considerations</h4>
<blockquote>
<p>There is no necessity to change any limitation if you are happy
with its default value. However if you decide to increase a
limitation you should be aware that doing so can affect both the
amount of memory used by the preprocessor and the speed in which
preprocessing is accomplished. In the first case some
preprocessors have been known to run out of memory if a
limitation value is increased, even though this should really
never happen in modern computer systems. In the latter case
preprocessing might become so slow that trying to use the
library with some increased limitation, and have your
preprocessing finish in some reasonable amount of time, becomes
impossible. The latter can occur when you are using lists or
seqs and while cycling through a large number of elements you
are also doing time consuming operations on each element value
which generates further macro looping. Nearly all arithmetic and
comparison operations involve further macro looping.<br>
</p>
<p>For lists and seqs there is functionality which uses the
BOOST_PP_FOR macro. If the maximum size for lists and seqs is
increased, by using BOOST_PP_LIMIT_MAG macro, you may also need
to define BOOST_PP_LIMIT_FOR to increase the maximum number of
'for' loops in order to cycle through all lists or seqs using
this functionality.<br>
</p>
<p>The BOOST_PP_WHILE construct is used internally for looping by
nearly all arithmetic and comparison macros as well as
internally by a number of other macros in the library which loop
through elements. While the construct can be called from within
an already running BOOST_PP_WHILE loop, it is possible to run
out of BOOST_PP_WHILE loops when this happens. In order to solve
this problem you can specify a BOOST_PP_LIMIT_MAG which is
larger than the maximum number you will ordinarily use. This
will give you twice the number of BOOST_PP_WHILE loops and will
keep you from running out of loops if you have to do arithmetic
computations while cycling through lists and seqs and the number
of lists and/or seqs you cycle through is anywhere near your
original&nbsp; maximum.<br>
</p>
</blockquote>
<h4>Testing limitations</h4>
<blockquote>
<p>The default testing of the preprocessor library, using Boost
Build's b2 command in the preprocessor test directory, only
tests the default limitations. If you want to test, within the
test directory, any of the non-default limitations which may be
set, you can do so by invoking the b2 command with any of these
explicit targets:<br>
</p>
<ul>
<li>preprocessor_128 : arrays, tuples, and variadics with up to
128 elements</li>
<li>preprocessor_256 : arrays, tuples, and variadics with up to
256 elements</li>
<li>preprocessor_512 : numbers, lists, seqs, looping, and
iteration constructs with 512 maximum</li>
<li>preprocessor_1024 : numbers, lists, seqs, looping, and
iteration constructs with 1024 maximum</li>
<li>preprocessor_tup : both the first and second items in this
list</li>
<li>preprocessor_num : both the third and fourth items in this
list</li>
<li>preprocessor_limits : all preprocessor limitations</li>
</ul>
If you invoke b2 with the last preprocessor_limits target your
testing may take awhile for your compiler. When you choose one of
the above targets, as in <code>'b2 preprocessor_limits'</code>,
the default tests are not run. If you want the default tests run,
along with any of the targets such as preprocessor_limits, your
command would be <code>'b2 . preprocessor_limits'</code>, where
the '.' notation means all the non-explicit ( aka default )
targets.<br>
</blockquote>
<blockquote> </blockquote>
<blockquote>
<ul>
</ul>
</blockquote>
<blockquote> </blockquote>
<b>See</b> <b>Also</b><br>
<ul>
<li><a href="../ref/is_standard.html">BOOST_PP_IS_STANDARD</a><br>
</li>
<li><a href="../ref/limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
<li><a href="../ref/limit_tuple.html">BOOST_PP_LIMIT_TUPLE</a></li>
<li><a href="../ref/limit_variadic.html">BOOST_PP_LIMIT_VARIADIC</a></li>
<li><a href="../ref/limit_seq.html">BOOST_PP_LIMIT_SEQ</a></li>
<li><a href="../ref/limit_while.html">BOOST_PP_LIMIT_WHILE</a></li>
<li><a href="../ref/limit_for.html">BOOST_PP_LIMIT_FOR</a></li>
<li><a href="../ref/limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
<li><a href="../ref/limit_iteration.html">BOOST_PP_LIMIT_ITERATION</a><br>
</li>
</ul>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2020</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version
1.0. (See accompanying file <a
href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

View File

@ -1,262 +1,260 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<meta content="text/html; charset=windows-1252"
http-equiv="content-type">
<title>variadic_macros.html</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
<link rel="stylesheet" type="text/css" href="../styles.css">
<style>
u { font-weight: normal; text-decoration: none; }
</style>
</head>
<body>
<h4>Variadic Macros</h4>
<div> Variadic macros are supported by a number of compilers. They are
macros of the form: </div>
<div class="code">
<div> Variadic macros are supported by nearly all compilers.
Variadic macros are macros of the form: </div>
<div class="code">
<pre>#define SOME_MACRO(ZeroOrMoreParameters,...) macro expansion possible specifying __VA_ARGS__</pre>
</div>
<div> The '...' in the parameter list represents the variadic data when the
macro is invoked and the __VA_ARGS__ in the expansion represents the
variadic data in the expansion of the macro. Variadic data is of the form
of 1 or more preprocessor tokens separated by commas.<br>
<div> The '...' in the parameter list represents the variadic data
when the macro is invoked and the __VA_ARGS__ in the expansion
represents the variadic data in the expansion of the macro.
Variadic data is of the form of 1 or more preprocessor tokens
separated by commas.<br>
<br>
The '...' must be the last parameter in the macro definition and there may
be 0 or more non-variadic parameters preceding it.<br>
The '...' must be the last parameter in the macro definition and
there may be 0 or more non-variadic parameters preceding it.<br>
<br>
In the expansion of the macro __VA_ARGS__ may be specified 0 or more times
to represent the variadic data. The variadic data in the expansion is a
comma separated list of preprocessor tokens representing the variadic data
which the invoker of the macro enters as the last arguments to the macro.<br>
In the expansion of the macro __VA_ARGS__ may be specified 0 or
more times to represent the variadic data. The variadic data in
the expansion is a comma separated list of preprocessor tokens
representing the variadic data which the invoker of the macro
enters as the last arguments to the macro.<br>
</div>
<h4>Example<u> - Creating and invoking a variadic macro.</u></h4>
<div class="code">
<div class="code">
<pre>#define INITIALIZE_INT_ARRAY(array_name,...) \ <br> static int array_name[] = { __VA_ARGS__ }; \ <br> /**/<br><br> INITIALIZE_INT_ARRAY(myname,45,789,33510,9346,2)</pre>
</div>
<u> <span style="font-weight: bold;">Preprocessor
Library Support<br>
<u> <span style="font-weight: bold;">Preprocessor Library Support<br>
</span></u>
<div>The library offers support for variadic macros for those
compilers
which support the feature. The library can automatically detect whether
a compiler supports variadic macros and sets the macro
BOOST_PP_VARIADICS accordingly to 1 if the compiler supports variadic
macros or 0 if the compiler does not support variadic macros.<br>
<div>The library requires support for variadic macros for all
compilers using the library. This usually means that compilation
at the C level is C99 or higher and that compilation at the C++
level is C++11 or higher. Many C++ compilers support variadic
macros at the C++98/C++03 level as long as strict compliance is
not turned on for those compilers at that level. In particular
both the gcc and clang compilers will support variadic macros at
the C++98/C++03 levels as long as strict ANSI compliance is not
turned on at that level. For those compilers this largely means
that the <code>-pedantic</code> or <code>-pedantic-errors</code>
option is not used at the C++98/C++03 level of compilation. Boost
C++ is deprecating compiling Boost libraries at the C++98/C++03
level, so if you must still use this library at that level be
aware of these aforementioned caveats.<br>
<br>
The end-user can #define BOOST_PP_VARIADICS to 1 or 0 himself in a
translation unit, before including any preprocessor header files, to
prevent the library from attempting to detect whether the compiler
supports variadic macros. This has the effect of manually turning on or
off variadic macro support in the library. Of course if one manually
turns on variadic macro support in the library, and one's compiler does
not support variadic macros, functionality in the library which uses
variadic macros will fail with error messages from the compiler.<br>
<a name="vmvcquirk"></a>Visual C++'s default preprocessor has a
few quirks related to variadic macros which require the end-user
to code slightly differently. When Visual C++'s default
preprocessor is being used BOOST_PP_VARIADICS_MSVC is 1, otherwise
it is 0. In this way the end-user can test for the presence of
Visual C++'s default preprocessor and code accordingly.<br>
<br>
When BOOST_PP_VARIADICS is 1, the library offers some extended
functionality
by using variadic macros, and also offers extended support for working
with variadic data.<br><br>
<a name="vmvcquirk"></a>Visual C++ has a
few quirks related to variadic macros which require the end-user to code
slightly differently. When BOOST_PP_VARIADICS is 1 and Visual C++ is the
compiler BOOST_PP_VARIADICS_MSVC is 1, else when BOOST_PP_VARIADICS is 1
and Visual C++ is not the compiler BOOST_PP_VARIADICS_MSVC is 0. When
BOOST_PP_VARIADICS is 0 then BOOST_PP_VARIADICS_MSVC is not defined.
In this way the end-user, when using variadic macros, can test for the
presence of Visual C++ as the compiler and code accordingly.<br>
<br>
Support for working with variadic
data is largely centered on being able to convert variadic data to
other library data types, since the
functionality for working with those Boost preprocessor library data
types is much greater than that for working with variadic data directly.<br>
</div>
<a name="VNotation"></a>
<h4>Notation For Variadic Macros<br>
</h4>
<div>In the documentation, headers which have variadic macros,
and
variadic macros themselves, have a notation of '(v)' appended to them.
For the variadic macros themselves this signifies that
BOOST_PP_VARIADICS must be 1 for those variadic macros to be usable.
For variadic macros which have a non-variadic equivalent, the
non-variadic equivalent will be used if BOOST_PP_VARIADICS is set to 0.
Support for working with variadic data is largely centered on
being able to convert variadic data to other library data types,
since the functionality for working with those Boost preprocessor
library data types is much greater than that for working with
variadic data directly.<br>
</div>
<a name="VNotation"></a>
<h4>Extended Functionality Using Variadic Macros<br>
</h4>
<div>Some macros in the library offer extended
functionality through the use of variadic macros.<br>
<div>Some macros in the library offer extended functionality through
the use of variadic macros.<br>
<br>
The variadic macro version offers the same functionality
as the non-variadic version, but because of the ability of the variadic
parameters to encompass a variable number of arguments, it also offers
an enhanced syntax using the same macro name.<br>
The variadic macro version offers extended functionality because
of the ability of the variadic parameters to encompass a variable
number of arguments. The library has functionality which can know
the number of variadic arguments passed when invoking a variadic
macro. This allows the same variadic macro to work with different
numbers of parameters, therefore providing more than one
syntactical equivalent for the same macro name.<br>
<br>
The macros in the library which offer this enhanced functionality are
all
centered on <i>tuple</i> manipulation. With variadic
macros it is
possible to
manipulate tuples without having to know the size of the tuple. So
while the invoker can still specify the size when using tuple macro
functionality, there are variadic versions of each of the tuple macros,
with the exact same name as the non-variadic macro, where the size need
not be specified.<br>
The macros in the library which offer this enhanced functionality
are all centered on <i>tuple</i> manipulation. With variadic
macros it is possible to manipulate tuples without having to know
the size of the tuple. So while the invoker can still specify the
size when using tuple macro functionality, there are syntactical
versions of each of the tuple macros where the size need not be
specified.<br>
</div>
<h4>Extended Support For Variadic Data</h4>
<div>The library offers extended support for working with
variadic data
which goes beyond the functionality offered by the C++ specification
for variadic macros. It does this through preprocessor programming and
by using some of the other functionality in the library itself. Header
and macro names
in the library which offer extended support for working with variadic
data, and need the compiler to support variadic macros, are marked with
a (v)<sup> </sup>to indicate a variadic macro.<br>
<div>The library offers extended support for working with variadic
data which goes beyond the functionality offered by the C++
specification for variadic macros. It does this through
preprocessor programming and by using some of the other
functionality in the library itself.<br>
<br>
The form of the functionality which the library offers is centered on
two macros which work with variadic data itself, and a set of macros
which convert between variadic data and other library data
The form of the functionality which the library offers is centered
on two macros which work with variadic data itself, and a set of
macros which convert between variadic data and other library data
types.<br>
<br>
The two macros are BOOST_PP_VARIADIC_ELEM and BOOST_PP_VARIADIC_SIZE,
which respectively return a particular token of variadic data and the
number of tokens of variadic data.<br>
The two macros are BOOST_PP_VARIADIC_ELEM and
BOOST_PP_VARIADIC_SIZE, which respectively return a particular
token of variadic data and the number of tokens of variadic data.<br>
<br>
The macros for converting variadic data to the library's data types are
BOOST_PP_VARIADIC_TO_ARRAY, BOOST_PP_VARIADIC_TO_LIST,
The macros for converting variadic data to the library's data
types are BOOST_PP_VARIADIC_TO_ARRAY, BOOST_PP_VARIADIC_TO_LIST,
BOOST_PP_VARIADIC_TO_SEQ, and BOOST_PP_VARIADIC_TO_TUPLE.<br>
<br>
All of these macros need compiler support for variadic data and only
exist if BOOST_PP_VARIADICS is 1. <br>
<br>
The remaining four macros, which convert from a library data type
to comma-separated preprocessor tokens, which is the form of
variadic data, do not need compiler support for variadic
macros. These functions are BOOST_PP_ARRAY_ENUM, BOOST_PP_LIST_ENUM,
BOOST_PP_SEQ_ENUM, and BOOST_PP_TUPLE_ENUM. However if one wishes to
use this variadic data reliably as arguments to other macros, one needs
variadic macro support.<br>
variadic data, do not use variadic macros. These functions are
BOOST_PP_ARRAY_ENUM, BOOST_PP_LIST_ENUM, BOOST_PP_SEQ_ENUM, and
BOOST_PP_TUPLE_ENUM. You can use this variadic data reliably as
arguments to other macros using variadic macro support.<br>
</div>
<u style="font-weight: bold;"> Using a Tuple Instead of an Array<br>
<h4><a name="C20_Support_For_Variadic_Macros"></a>C++20 Support For
Variadic Macros</h4>
<div> In the C++20 specification there is a new construct which can
be used in the expansion of a variadic macro, called __VA_OPT__.
This construct when used in the expansion of a variadic macro is
followed by an opening paranthesis '(', preprocessor data, and a
closing parenthesis ')'. When the variadic data passed by the
invocation of a variadic macro is empty, this new construct
expands to nothing. When the variadic data passed by the
invocation of a variadic macro is not empty, this new construct
expands to the preprocessor data between its opening and closing
parentheses. <br>
<br>
This library offers support for this new C++20 construct by
automatically detecting whether this new construct is supported by
the compiler's preprocessor when using the library. The library
macro which detects support for the __VA_OPT__ construct is called
BOOST_PP_VARIADIC_HAS_OPT. This is a function-like macro which
takes no parameters and returns 1 if the compiler is working in
C++20 mode and supports the __VA_OPT__ construct, while otherwise
it returns 0. <br>
<br>
When the __VA_OPT__ construct is supported in C++20 mode the
variadic data passed to the variadic macros and to
BOOST_PP_OVERLOAD can be empty, otherwise when not in this mode
variadic data passed to the variadic macros should never be empty.
In this C+++20 mode invoking BOOST_PP_VARIADIC_SIZE with empty
data expands to 0, invoking BOOST_PP_VARIADIC_TO_ARRAY with empty
data expands to the empty array '(0,())', invoking
BOOST_PP_VARIADIC_TO_LIST with empty data expands to the empty
list 'BOOST_PP_NIL', and invoking BOOST_PP_OVERLOAD with empty
data creates an overload name with 0 appended. Similarly in this
C++20 mode passing an empty array '(0,())' to BOOST_PP_ARRAY_ENUM
expands to empty variadic data and passing an empty list
'BOOST_PP_NIL' to BOOST_PP_LIST_ENUM also expands to empty
variadic data. Neither a seq or a tuple can be empty so passing
empty variadic data to either BOOST_PP_VARIADIC_TO_SEQ or
BOOST_PP_VARIADIC_TO_TUPLE is erroneous. Likewise passing empty
data to BOOST_PP_VARIADIC_ELEM is always erroneous since there are
no tokens of variadic data to access.<br>
</div>
<u style="font-weight: bold;"> Using a Tuple Instead of an Array<br>
</u>
<div>An array as a preprocessor data type is a two-element tuple where the
first element is the array size and the second element is a tuple which
constitutes the array data. Because a tuple knows its own size when the
compiler supports variadic macros, there is no reason to use the array preprocessor
data type as opposed to the tuple preprocessor data type; the tuple data
type now has all of the functionality which the array data type has and is
syntactically easier to use. With variadic macro support, which is now
officially part of the latest C++ standard, the preprocessor array data
type is essentially obsolete for conforming C++ compilers. Only if your
compiler does not support variadic macros is the preprocessor array data
type still useful.</div>
<u style="font-weight: bold;">Using Variadic Data</u>
<div>Variadic data exists in the
form of comma-separated preprocessor tokens. This is the case whether
the variadic data comes from the __VA_ARGS__ of a variadic macro, from
the conversion of a library's data type to variadic data, or the
<div>An array as a preprocessor data type is a two-element tuple
where the first element is the array size and the second element
is a tuple which constitutes the array data. Because a tuple knows
its own size because of compiler support for variadic macros,
there is no reason to use the array preprocessor data type as
opposed to the tuple preprocessor data type; the tuple data type
now has all of the functionality which the array data type has and
is syntactically easier to use. The preprocessor array data type
is essentially obsolete for modern C++ compilers.</div>
<u style="font-weight: bold;">Using Variadic Data</u>
<div>Variadic data exists in the form of comma-separated
preprocessor tokens. This is the case whether the variadic data
comes from the __VA_ARGS__ of a variadic macro, from the
conversion of a library's data type to variadic data, or the
manual construction of comma-separated preprocessing tokens by the
programmer writing a macro.<br>
<br>
The easiest way to work with
variadic data internally is to convert it to a library data type.
Library data types, whether an <i>array</i>, <i>list</i>,
<i>sequence</i>,
or <i>tuple</i>, have a rich set of functionality for
manipulating
data whereas
variadic data functionality in the library only allows one to access
the variadic data as a whole or to access a single token of the
variadic data at a time.<br>
The easiest way to work with variadic data internally is to
convert it to a library data type. Library data types, whether an
<i>array</i>, <i>list</i>, <i>sequence</i>, or <i>tuple</i>,
have a rich set of functionality for manipulating data whereas
variadic data functionality in the library only allows one to
access the variadic data as a whole or to access a single token of
the variadic data at a time.<br>
<br>
The user of the library still may
choose to pass variadic data back into internal macros rather than
convert it to other library data types. There is no problem passing
variadic data as a whole to variadic macros as the last parameter of
the macro. However: <br>
The user of the library still may choose to pass variadic data
back into internal macros rather than convert it to other library
data types. There is no problem passing variadic data as a whole
to variadic macros as the last parameter of the macro. However: <br>
<br>
<span style="font-weight: bold;">Attempting to pass
variadic data as a
whole directly into a non-variadic macro is not guaranteed to work and
may fail.<br>
<span style="font-weight: bold;">Attempting to pass variadic data
as a whole directly into a non-variadic macro is not guaranteed
to work and may fail.<br>
</span><br>
This occurs because of a preprocessor weakness in a number
of compilers, currently most notably Visual C++. Even passing variadic
data as arguments to a non-variadic macro, when it is not represented
in
the form of<6F> __VA_ARGS__, may fail with certain compilers.<br>
This occurs because of a preprocessor weakness in a number of
compilers, currently most notably Visual C++'s default
preprocessor. Even passing variadic data as arguments to a
non-variadic macro, when it is not represented in the form
of&nbsp; __VA_ARGS__, may fail with certain compilers.<br>
<br>
What follows are very simple examples, showing how variadic data can be
passed to a non-variadic macro.<br>
What follows are very simple examples, showing how variadic data
can be passed to a non-variadic macro.<br>
<br>
First an example of what NOT to do.<br>
</div>
<h4>Example<u> - Passing variadic data as a whole to a
non-variadic
<h4>Example<u> - Passing variadic data as a whole to a non-variadic
macro. DO NOT DO.</u></h4>
<div class="code">
<pre>#define MACRO_ARG_2(x,y) BOOST_PP_ADD(x,y)<br>#define VAR_MACRO(...) __VA_ARGS__<br><br>/* The following should not be done and is not guaranteed to work with compilers. */<br><br><span
style="font-weight: bold;"><span style="font-family: monospace;"></span></span>int xx = MACRO_ARG_2(VAR_MACRO(2,3));</pre>
<div class="code">
<pre>#define MACRO_ARG_2(x,y) BOOST_PP_ADD(x,y)<br>#define VAR_MACRO(...) __VA_ARGS__<br><br>/* The following should not be done and is not guaranteed to work with compilers. */<br><br><span style="font-weight: bold;"><span style="font-family: monospace;"></span></span>int xx = MACRO_ARG_2(VAR_MACRO(2,3));</pre>
</div>
<div> There are two ways to pass variadic data to a non-variadic
macro.
The
first of these is to pass the individual tokens of the variadic data
separately to the non-variadic macro using the BOOST_PP_VARIADIC_ELEM
macro in the library.<br>
macro. The first of these is to pass the individual tokens of the
variadic data separately to the non-variadic macro using the
BOOST_PP_VARIADIC_ELEM macro in the library.<br>
</div>
<h4>Example<u> - Passing individual variadic data tokens to
a
<h4>Example<u> - Passing individual variadic data tokens to a
non-variadic macro.<br>
</u></h4>
<div class="code">
<div class="code">
<pre>#define MACRO_ARG_2(x,y) BOOST_PP_ADD(x,y)<br>#define VAR_MACRO(...) __VA_ARGS__<br><br>/* The following will work correctly */<br><br>int xx = MACRO_ARG_2<br> (<br> BOOST_PP_VARIADIC_ELEM(0,VAR_MACRO(2,3)),<br> BOOST_PP_VARIADIC_ELEM(1,VAR_MACRO(2,3))<br> );</pre>
</div>
<div>The second way is to use a macro in the library called
BOOST_PP_OVERLOAD.
This macro allows one to "overload" a variadic macro to non-variadic
macros of different numbers of parameters, using a common prefix.
</div>
BOOST_PP_OVERLOAD. This macro allows one to "overload" a variadic
macro to non-variadic macros of different numbers of parameters,
using a common prefix. </div>
<h4>Example<u> - Passing variadic data as a whole to
BOOST_PP_OVERLOAD
and on to a non-variadic macro.<br>
BOOST_PP_OVERLOAD and on to a non-variadic macro.<br>
</u></h4>
<div class="code">
<pre>#define MACRO_ARG_2(x,y) BOOST_PP_ADD(x,y)<br>#define VAR_MACRO(...) __VA_ARGS__<br><br>/* The following will work correctly */<br><br>int xx = BOOST_PP_OVERLOAD(MACRO_ARG_,VAR_MACRO(2,3))(VAR_MACRO(2,3));<br><br>/* For Visual C++ it is necessary to do this */<br><br>int xx = <br>BOOST_PP_CAT(BOOST_PP_OVERLOAD(MACRO_ARG_,VAR_MACRO(2,3))(VAR_MACRO(2,3)),BOOST_PP_EMPTY());</pre>
<div class="code">
<pre>#define MACRO_ARG_2(x,y) BOOST_PP_ADD(x,y)<br>#define VAR_MACRO(...) __VA_ARGS__<br><br>/* The following will work correctly */<br><br>int xx = BOOST_PP_OVERLOAD(MACRO_ARG_,VAR_MACRO(2,3))(VAR_MACRO(2,3));<br><br>/* For Visual C++'s default preprocessor it is necessary to do this */<br><br>int xx = <br>BOOST_PP_CAT(BOOST_PP_OVERLOAD(MACRO_ARG_,VAR_MACRO(2,3))(VAR_MACRO(2,3)),BOOST_PP_EMPTY());</pre>
</div>
<br>
<div>Although these techniques will work when passing variadic
data to
non-variadic macros, it is much better and less problematical to
work internally with the existing library data types and to only use
variadic
macros as an interface for end-users when there is a need to have a
macro which takes a
variable number of parameters.<br>
<div>Although these techniques will work when passing variadic data
to non-variadic macros, it is much better and less problematical
to work internally with the existing library data types and to
only use variadic macros as an interface for end-users when there
is a need to have a macro which takes a variable number of
parameters.<br>
</div>
<b>See</b> <b>Also</b><br>
<ul>
<li><a href="../ref/variadics.html">BOOST_PP_VARIADICS</a></li>
<li><a href="../headers/tuple.html">Tuple Macros</a><br>
<li><a href="../headers/tuple.html">Tuple Macros</a><br>
</li>
<li><a href="../headers/variadic.html">Variadic
Macros<br>
<li><a href="../headers/variadic.html">Variadic Macros<br>
</a></li>
<li><a href="../ref/array_enum.html">BOOST_PP_ARRAY_ENUM</a></li>
<li><a href="../ref/list_enum_r.html">BOOST_PP_LIST_ENUM</a></li>
<li><a href="../ref/seq_enum.html">BOOST_PP_SEQ_ENUM</a></li>
<li><a href="../ref/tuple_enum.html">BOOST_PP_TUPLE_ENUM</a></li>
<li><a href="../ref/overload.html">BOOST_PP_OVERLOAD</a></li>
<li><a href="../ref/array_enum.html">BOOST_PP_ARRAY_ENUM</a></li>
<li><a href="../ref/list_enum_r.html">BOOST_PP_LIST_ENUM</a></li>
<li><a href="../ref/seq_enum.html">BOOST_PP_SEQ_ENUM</a></li>
<li><a href="../ref/tuple_enum.html">BOOST_PP_TUPLE_ENUM</a></li>
<li><a href="../ref/overload.html">BOOST_PP_OVERLOAD</a></li>
</ul>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright
Edward Diener
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener
2011,2013,2016</i> </div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License,
Version 1.0.
(See accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version
1.0. (See accompanying file <a
href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body></html>
</body>
</html>

View File

@ -8,15 +8,19 @@
# */
#
# /* Revised by Paul Mensonides (2002) */
# /* Revised by Edward Diener (2020) */
#
# /* See http://www.boost.org for most recent version. */
#
# ifndef BOOST_PREPROCESSOR_ARITHMETIC_ADD_HPP
# define BOOST_PREPROCESSOR_ARITHMETIC_ADD_HPP
#
# include <boost/preprocessor/config/config.hpp>
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
#
# include <boost/preprocessor/arithmetic/dec.hpp>
# include <boost/preprocessor/arithmetic/inc.hpp>
# include <boost/preprocessor/config/config.hpp>
# include <boost/preprocessor/control/while.hpp>
# include <boost/preprocessor/tuple/elem.hpp>
#
@ -48,4 +52,53 @@
# define BOOST_PP_ADD_D_I(d, x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_ADD_P, BOOST_PP_ADD_O, (x, y)))
# endif
#
# else
#
# include <boost/preprocessor/arithmetic/dec.hpp>
# include <boost/preprocessor/arithmetic/inc.hpp>
# include <boost/preprocessor/control/iif.hpp>
# include <boost/preprocessor/control/while.hpp>
# include <boost/preprocessor/facilities/identity.hpp>
# include <boost/preprocessor/logical/bitand.hpp>
# include <boost/preprocessor/logical/bitor.hpp>
# include <boost/preprocessor/logical/bool.hpp>
# include <boost/preprocessor/logical/compl.hpp>
# include <boost/preprocessor/tuple/elem.hpp>
# include <boost/preprocessor/arithmetic/detail/is_maximum_number.hpp>
# include <boost/preprocessor/arithmetic/detail/is_minimum_number.hpp>
#
# /* BOOST_PP_ADD */
#
# define BOOST_PP_ADD(x, y) BOOST_PP_IIF(BOOST_PP_BITOR(BOOST_PP_DETAIL_IS_MAXIMUM_NUMBER(y),BOOST_PP_DETAIL_IS_MINIMUM_NUMBER(x)),BOOST_PP_IDENTITY_N(y,2),BOOST_PP_ADD_DO)(x,y)
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
# define BOOST_PP_ADD_DO(x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE(BOOST_PP_ADD_P, BOOST_PP_ADD_O, (x, y)))
# else
# define BOOST_PP_ADD_DO(x, y) BOOST_PP_ADD_I(x, y)
# define BOOST_PP_ADD_I(x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE(BOOST_PP_ADD_P, BOOST_PP_ADD_O, (x, y)))
# endif
#
# define BOOST_PP_ADD_P(d, xy) BOOST_PP_BITAND(BOOST_PP_BOOL(BOOST_PP_TUPLE_ELEM(2, 1, xy)),BOOST_PP_COMPL(BOOST_PP_DETAIL_IS_MAXIMUM_NUMBER(BOOST_PP_TUPLE_ELEM(2, 0, xy))))
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
# define BOOST_PP_ADD_O(d, xy) BOOST_PP_ADD_O_I xy
# else
# define BOOST_PP_ADD_O(d, xy) BOOST_PP_ADD_O_I(BOOST_PP_TUPLE_ELEM(2, 0, xy), BOOST_PP_TUPLE_ELEM(2, 1, xy))
# endif
#
# define BOOST_PP_ADD_O_I(x, y) (BOOST_PP_INC(x), BOOST_PP_DEC(y))
#
# /* BOOST_PP_ADD_D */
#
# define BOOST_PP_ADD_D(d, x, y) BOOST_PP_IIF(BOOST_PP_BITOR(BOOST_PP_DETAIL_IS_MAXIMUM_NUMBER(y),BOOST_PP_DETAIL_IS_MINIMUM_NUMBER(x)),BOOST_PP_IDENTITY_N(y,3),BOOST_PP_ADD_DO_D)(d,x,y)
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
# define BOOST_PP_ADD_DO_D(d, x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_ADD_P, BOOST_PP_ADD_O, (x, y)))
# else
# define BOOST_PP_ADD_DO_D(d, x, y) BOOST_PP_ADD_D_I(d, x, y)
# define BOOST_PP_ADD_D_I(d, x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_ADD_P, BOOST_PP_ADD_O, (x, y)))
# endif
#
# endif
#
# endif

View File

@ -8,6 +8,7 @@
# */
#
# /* Revised by Paul Mensonides (2002) */
# /* Revised by Edward Diener (2020) */
#
# /* See http://www.boost.org for most recent version. */
#
@ -16,6 +17,8 @@
#
# include <boost/preprocessor/config/config.hpp>
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
#
# /* BOOST_PP_DEC */
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
@ -286,4 +289,34 @@
# define BOOST_PP_DEC_256 255
# define BOOST_PP_DEC_257 256
#
# else
#
# /* BOOST_PP_DEC */
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
# define BOOST_PP_DEC(x) BOOST_PP_DEC_I(x)
# else
# define BOOST_PP_DEC(x) BOOST_PP_DEC_OO((x))
# define BOOST_PP_DEC_OO(par) BOOST_PP_DEC_I ## par
# endif
#
# define BOOST_PP_DEC_I(x) BOOST_PP_DEC_ ## x
#
# include <boost/preprocessor/config/limits.hpp>
#
# if BOOST_PP_LIMIT_MAG == 256
# include <boost/preprocessor/arithmetic/limits/dec_256.hpp>
# elif BOOST_PP_LIMIT_MAG == 512
# include <boost/preprocessor/arithmetic/limits/dec_256.hpp>
# include <boost/preprocessor/arithmetic/limits/dec_512.hpp>
# elif BOOST_PP_LIMIT_MAG == 1024
# include <boost/preprocessor/arithmetic/limits/dec_256.hpp>
# include <boost/preprocessor/arithmetic/limits/dec_512.hpp>
# include <boost/preprocessor/arithmetic/limits/dec_1024.hpp>
# else
# error Incorrect value for the BOOST_PP_LIMIT_MAG limit
# endif
#
# endif
#
# endif

View File

@ -0,0 +1,21 @@
# /* **************************************************************************
# * *
# * (C) Copyright Edward Diener 2020. *
# * 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) *
# * *
# ************************************************************************** */
#
# /* See http://www.boost.org for most recent version. */
#
# ifndef BOOST_PREPROCESSOR_ARITHMETIC_DETAIL_IS_1_NUMBER_HPP
# define BOOST_PREPROCESSOR_ARITHMETIC_DETAIL_IS_1_NUMBER_HPP
#
# /* BOOST_PP_DETAIL_IS_1_NUMBER */
#
# include <boost/preprocessor/comparison/equal.hpp>
#
# define BOOST_PP_DETAIL_IS_1_NUMBER(x) BOOST_PP_EQUAL(x,1)
#
# endif

View File

@ -0,0 +1,22 @@
# /* **************************************************************************
# * *
# * (C) Copyright Edward Diener 2020. *
# * 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) *
# * *
# ************************************************************************** */
#
# /* See http://www.boost.org for most recent version. */
#
# ifndef BOOST_PREPROCESSOR_ARITHMETIC_DETAIL_IS_MAXIMUM_NUMBER_HPP
# define BOOST_PREPROCESSOR_ARITHMETIC_DETAIL_IS_MAXIMUM_NUMBER_HPP
#
# /* BOOST_PP_DETAIL_IS_MAXIMUM_NUMBER */
#
# include <boost/preprocessor/comparison/equal.hpp>
# include <boost/preprocessor/arithmetic/detail/maximum_number.hpp>
#
# define BOOST_PP_DETAIL_IS_MAXIMUM_NUMBER(x) BOOST_PP_EQUAL(x,BOOST_PP_DETAIL_MAXIMUM_NUMBER)
#
# endif

View File

@ -0,0 +1,21 @@
# /* **************************************************************************
# * *
# * (C) Copyright Edward Diener 2020. *
# * 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) *
# * *
# ************************************************************************** */
#
# /* See http://www.boost.org for most recent version. */
#
# ifndef BOOST_PREPROCESSOR_ARITHMETIC_DETAIL_IS_MINIMUM_NUMBER_HPP
# define BOOST_PREPROCESSOR_ARITHMETIC_DETAIL_IS_MINIMUM_NUMBER_HPP
#
# /* BOOST_PP_DETAIL_IS_MINIMUM_NUMBER */
#
# include <boost/preprocessor/logical/not.hpp>
#
# define BOOST_PP_DETAIL_IS_MINIMUM_NUMBER(x) BOOST_PP_NOT(x)
#
# endif

View File

@ -0,0 +1,19 @@
# /* **************************************************************************
# * *
# * (C) Copyright Edward Diener 2020. *
# * 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) *
# * *
# ************************************************************************** */
#
# /* See http://www.boost.org for most recent version. */
#
# ifndef BOOST_PREPROCESSOR_ARITHMETIC_DETAIL_MAXIMUM_NUMBER_HPP
# define BOOST_PREPROCESSOR_ARITHMETIC_DETAIL_MAXIMUM_NUMBER_HPP
#
# include <boost/preprocessor/config/limits.hpp>
#
# define BOOST_PP_DETAIL_MAXIMUM_NUMBER BOOST_PP_LIMIT_MAG
#
# endif

View File

@ -8,14 +8,18 @@
# */
#
# /* Revised by Paul Mensonides (2002) */
# /* Revised by Edward Diener (2020) */
#
# /* See http://www.boost.org for most recent version. */
#
# ifndef BOOST_PREPROCESSOR_ARITHMETIC_DIV_HPP
# define BOOST_PREPROCESSOR_ARITHMETIC_DIV_HPP
#
# include <boost/preprocessor/arithmetic/detail/div_base.hpp>
# include <boost/preprocessor/config/config.hpp>
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
#
# include <boost/preprocessor/arithmetic/detail/div_base.hpp>
# include <boost/preprocessor/tuple/elem.hpp>
#
# /* BOOST_PP_DIV */
@ -36,4 +40,36 @@
# define BOOST_PP_DIV_D_I(d, x, y) BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_DIV_BASE_D(d, x, y))
# endif
#
# else
#
# include <boost/preprocessor/arithmetic/detail/div_base.hpp>
# include <boost/preprocessor/control/iif.hpp>
# include <boost/preprocessor/facilities/identity.hpp>
# include <boost/preprocessor/tuple/elem.hpp>
# include <boost/preprocessor/arithmetic/detail/is_1_number.hpp>
#
# /* BOOST_PP_DIV */
#
# define BOOST_PP_DIV(x, y) BOOST_PP_IIF(BOOST_PP_DETAIL_IS_1_NUMBER(y),BOOST_PP_IDENTITY_N(x,2),BOOST_PP_DIV_DO)(x,y)
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
# define BOOST_PP_DIV_DO(x, y) BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_DIV_BASE(x, y))
# else
# define BOOST_PP_DIV_DO(x, y) BOOST_PP_DIV_I(x, y)
# define BOOST_PP_DIV_I(x, y) BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_DIV_BASE(x, y))
# endif
#
# /* BOOST_PP_DIV_D */
#
# define BOOST_PP_DIV_D(d, x, y) BOOST_PP_IIF(BOOST_PP_DETAIL_IS_1_NUMBER(y),BOOST_PP_IDENTITY_N(x,3),BOOST_PP_DIV_DO_D)(d,x,y)
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
# define BOOST_PP_DIV_DO_D(d, x, y) BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_DIV_BASE_D(d, x, y))
# else
# define BOOST_PP_DIV_DO_D(d, x, y) BOOST_PP_DIV_D_I(d, x, y)
# define BOOST_PP_DIV_D_I(d, x, y) BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_DIV_BASE_D(d, x, y))
# endif
#
# endif
#
# endif

View File

@ -8,6 +8,7 @@
# */
#
# /* Revised by Paul Mensonides (2002) */
# /* Revised by Edward Diener (2020) */
#
# /* See http://www.boost.org for most recent version. */
#
@ -16,6 +17,8 @@
#
# include <boost/preprocessor/config/config.hpp>
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
#
# /* BOOST_PP_INC */
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
@ -285,4 +288,34 @@
# define BOOST_PP_INC_255 256
# define BOOST_PP_INC_256 256
#
# else
#
# /* BOOST_PP_INC */
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
# define BOOST_PP_INC(x) BOOST_PP_INC_I(x)
# else
# define BOOST_PP_INC(x) BOOST_PP_INC_OO((x))
# define BOOST_PP_INC_OO(par) BOOST_PP_INC_I ## par
# endif
#
# define BOOST_PP_INC_I(x) BOOST_PP_INC_ ## x
#
# include <boost/preprocessor/config/limits.hpp>
#
# if BOOST_PP_LIMIT_MAG == 256
# include <boost/preprocessor/arithmetic/limits/inc_256.hpp>
# elif BOOST_PP_LIMIT_MAG == 512
# include <boost/preprocessor/arithmetic/limits/inc_256.hpp>
# include <boost/preprocessor/arithmetic/limits/inc_512.hpp>
# elif BOOST_PP_LIMIT_MAG == 1024
# include <boost/preprocessor/arithmetic/limits/inc_256.hpp>
# include <boost/preprocessor/arithmetic/limits/inc_512.hpp>
# include <boost/preprocessor/arithmetic/limits/inc_1024.hpp>
# else
# error Incorrect value for the BOOST_PP_LIMIT_MAG limit
# endif
#
# endif
#
# endif

View File

@ -0,0 +1,531 @@
# /* Copyright (C) 2001
# * Housemarque Oy
# * http://www.housemarque.com
# *
# * 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)
# */
#
# /* Revised by Paul Mensonides (2002) */
# /* Revised by Edward Diener (2020) */
#
# /* See http://www.boost.org for most recent version. */
#
# ifndef BOOST_PREPROCESSOR_ARITHMETIC_DEC_1024_HPP
# define BOOST_PREPROCESSOR_ARITHMETIC_DEC_1024_HPP
#
# define BOOST_PP_DEC_514 513
# define BOOST_PP_DEC_515 514
# define BOOST_PP_DEC_516 515
# define BOOST_PP_DEC_517 516
# define BOOST_PP_DEC_518 517
# define BOOST_PP_DEC_519 518
# define BOOST_PP_DEC_520 519
# define BOOST_PP_DEC_521 520
# define BOOST_PP_DEC_522 521
# define BOOST_PP_DEC_523 522
# define BOOST_PP_DEC_524 523
# define BOOST_PP_DEC_525 524
# define BOOST_PP_DEC_526 525
# define BOOST_PP_DEC_527 526
# define BOOST_PP_DEC_528 527
# define BOOST_PP_DEC_529 528
# define BOOST_PP_DEC_530 529
# define BOOST_PP_DEC_531 530
# define BOOST_PP_DEC_532 531
# define BOOST_PP_DEC_533 532
# define BOOST_PP_DEC_534 533
# define BOOST_PP_DEC_535 534
# define BOOST_PP_DEC_536 535
# define BOOST_PP_DEC_537 536
# define BOOST_PP_DEC_538 537
# define BOOST_PP_DEC_539 538
# define BOOST_PP_DEC_540 539
# define BOOST_PP_DEC_541 540
# define BOOST_PP_DEC_542 541
# define BOOST_PP_DEC_543 542
# define BOOST_PP_DEC_544 543
# define BOOST_PP_DEC_545 544
# define BOOST_PP_DEC_546 545
# define BOOST_PP_DEC_547 546
# define BOOST_PP_DEC_548 547
# define BOOST_PP_DEC_549 548
# define BOOST_PP_DEC_550 549
# define BOOST_PP_DEC_551 550
# define BOOST_PP_DEC_552 551
# define BOOST_PP_DEC_553 552
# define BOOST_PP_DEC_554 553
# define BOOST_PP_DEC_555 554
# define BOOST_PP_DEC_556 555
# define BOOST_PP_DEC_557 556
# define BOOST_PP_DEC_558 557
# define BOOST_PP_DEC_559 558
# define BOOST_PP_DEC_560 559
# define BOOST_PP_DEC_561 560
# define BOOST_PP_DEC_562 561
# define BOOST_PP_DEC_563 562
# define BOOST_PP_DEC_564 563
# define BOOST_PP_DEC_565 564
# define BOOST_PP_DEC_566 565
# define BOOST_PP_DEC_567 566
# define BOOST_PP_DEC_568 567
# define BOOST_PP_DEC_569 568
# define BOOST_PP_DEC_570 569
# define BOOST_PP_DEC_571 570
# define BOOST_PP_DEC_572 571
# define BOOST_PP_DEC_573 572
# define BOOST_PP_DEC_574 573
# define BOOST_PP_DEC_575 574
# define BOOST_PP_DEC_576 575
# define BOOST_PP_DEC_577 576
# define BOOST_PP_DEC_578 577
# define BOOST_PP_DEC_579 578
# define BOOST_PP_DEC_580 579
# define BOOST_PP_DEC_581 580
# define BOOST_PP_DEC_582 581
# define BOOST_PP_DEC_583 582
# define BOOST_PP_DEC_584 583
# define BOOST_PP_DEC_585 584
# define BOOST_PP_DEC_586 585
# define BOOST_PP_DEC_587 586
# define BOOST_PP_DEC_588 587
# define BOOST_PP_DEC_589 588
# define BOOST_PP_DEC_590 589
# define BOOST_PP_DEC_591 590
# define BOOST_PP_DEC_592 591
# define BOOST_PP_DEC_593 592
# define BOOST_PP_DEC_594 593
# define BOOST_PP_DEC_595 594
# define BOOST_PP_DEC_596 595
# define BOOST_PP_DEC_597 596
# define BOOST_PP_DEC_598 597
# define BOOST_PP_DEC_599 598
# define BOOST_PP_DEC_600 599
# define BOOST_PP_DEC_601 600
# define BOOST_PP_DEC_602 601
# define BOOST_PP_DEC_603 602
# define BOOST_PP_DEC_604 603
# define BOOST_PP_DEC_605 604
# define BOOST_PP_DEC_606 605
# define BOOST_PP_DEC_607 606
# define BOOST_PP_DEC_608 607
# define BOOST_PP_DEC_609 608
# define BOOST_PP_DEC_610 609
# define BOOST_PP_DEC_611 610
# define BOOST_PP_DEC_612 611
# define BOOST_PP_DEC_613 612
# define BOOST_PP_DEC_614 613
# define BOOST_PP_DEC_615 614
# define BOOST_PP_DEC_616 615
# define BOOST_PP_DEC_617 616
# define BOOST_PP_DEC_618 617
# define BOOST_PP_DEC_619 618
# define BOOST_PP_DEC_620 619
# define BOOST_PP_DEC_621 620
# define BOOST_PP_DEC_622 621
# define BOOST_PP_DEC_623 622
# define BOOST_PP_DEC_624 623
# define BOOST_PP_DEC_625 624
# define BOOST_PP_DEC_626 625
# define BOOST_PP_DEC_627 626
# define BOOST_PP_DEC_628 627
# define BOOST_PP_DEC_629 628
# define BOOST_PP_DEC_630 629
# define BOOST_PP_DEC_631 630
# define BOOST_PP_DEC_632 631
# define BOOST_PP_DEC_633 632
# define BOOST_PP_DEC_634 633
# define BOOST_PP_DEC_635 634
# define BOOST_PP_DEC_636 635
# define BOOST_PP_DEC_637 636
# define BOOST_PP_DEC_638 637
# define BOOST_PP_DEC_639 638
# define BOOST_PP_DEC_640 639
# define BOOST_PP_DEC_641 640
# define BOOST_PP_DEC_642 641
# define BOOST_PP_DEC_643 642
# define BOOST_PP_DEC_644 643
# define BOOST_PP_DEC_645 644
# define BOOST_PP_DEC_646 645
# define BOOST_PP_DEC_647 646
# define BOOST_PP_DEC_648 647
# define BOOST_PP_DEC_649 648
# define BOOST_PP_DEC_650 649
# define BOOST_PP_DEC_651 650
# define BOOST_PP_DEC_652 651
# define BOOST_PP_DEC_653 652
# define BOOST_PP_DEC_654 653
# define BOOST_PP_DEC_655 654
# define BOOST_PP_DEC_656 655
# define BOOST_PP_DEC_657 656
# define BOOST_PP_DEC_658 657
# define BOOST_PP_DEC_659 658
# define BOOST_PP_DEC_660 659
# define BOOST_PP_DEC_661 660
# define BOOST_PP_DEC_662 661
# define BOOST_PP_DEC_663 662
# define BOOST_PP_DEC_664 663
# define BOOST_PP_DEC_665 664
# define BOOST_PP_DEC_666 665
# define BOOST_PP_DEC_667 666
# define BOOST_PP_DEC_668 667
# define BOOST_PP_DEC_669 668
# define BOOST_PP_DEC_670 669
# define BOOST_PP_DEC_671 670
# define BOOST_PP_DEC_672 671
# define BOOST_PP_DEC_673 672
# define BOOST_PP_DEC_674 673
# define BOOST_PP_DEC_675 674
# define BOOST_PP_DEC_676 675
# define BOOST_PP_DEC_677 676
# define BOOST_PP_DEC_678 677
# define BOOST_PP_DEC_679 678
# define BOOST_PP_DEC_680 679
# define BOOST_PP_DEC_681 680
# define BOOST_PP_DEC_682 681
# define BOOST_PP_DEC_683 682
# define BOOST_PP_DEC_684 683
# define BOOST_PP_DEC_685 684
# define BOOST_PP_DEC_686 685
# define BOOST_PP_DEC_687 686
# define BOOST_PP_DEC_688 687
# define BOOST_PP_DEC_689 688
# define BOOST_PP_DEC_690 689
# define BOOST_PP_DEC_691 690
# define BOOST_PP_DEC_692 691
# define BOOST_PP_DEC_693 692
# define BOOST_PP_DEC_694 693
# define BOOST_PP_DEC_695 694
# define BOOST_PP_DEC_696 695
# define BOOST_PP_DEC_697 696
# define BOOST_PP_DEC_698 697
# define BOOST_PP_DEC_699 698
# define BOOST_PP_DEC_700 699
# define BOOST_PP_DEC_701 700
# define BOOST_PP_DEC_702 701
# define BOOST_PP_DEC_703 702
# define BOOST_PP_DEC_704 703
# define BOOST_PP_DEC_705 704
# define BOOST_PP_DEC_706 705
# define BOOST_PP_DEC_707 706
# define BOOST_PP_DEC_708 707
# define BOOST_PP_DEC_709 708
# define BOOST_PP_DEC_710 709
# define BOOST_PP_DEC_711 710
# define BOOST_PP_DEC_712 711
# define BOOST_PP_DEC_713 712
# define BOOST_PP_DEC_714 713
# define BOOST_PP_DEC_715 714
# define BOOST_PP_DEC_716 715
# define BOOST_PP_DEC_717 716
# define BOOST_PP_DEC_718 717
# define BOOST_PP_DEC_719 718
# define BOOST_PP_DEC_720 719
# define BOOST_PP_DEC_721 720
# define BOOST_PP_DEC_722 721
# define BOOST_PP_DEC_723 722
# define BOOST_PP_DEC_724 723
# define BOOST_PP_DEC_725 724
# define BOOST_PP_DEC_726 725
# define BOOST_PP_DEC_727 726
# define BOOST_PP_DEC_728 727
# define BOOST_PP_DEC_729 728
# define BOOST_PP_DEC_730 729
# define BOOST_PP_DEC_731 730
# define BOOST_PP_DEC_732 731
# define BOOST_PP_DEC_733 732
# define BOOST_PP_DEC_734 733
# define BOOST_PP_DEC_735 734
# define BOOST_PP_DEC_736 735
# define BOOST_PP_DEC_737 736
# define BOOST_PP_DEC_738 737
# define BOOST_PP_DEC_739 738
# define BOOST_PP_DEC_740 739
# define BOOST_PP_DEC_741 740
# define BOOST_PP_DEC_742 741
# define BOOST_PP_DEC_743 742
# define BOOST_PP_DEC_744 743
# define BOOST_PP_DEC_745 744
# define BOOST_PP_DEC_746 745
# define BOOST_PP_DEC_747 746
# define BOOST_PP_DEC_748 747
# define BOOST_PP_DEC_749 748
# define BOOST_PP_DEC_750 749
# define BOOST_PP_DEC_751 750
# define BOOST_PP_DEC_752 751
# define BOOST_PP_DEC_753 752
# define BOOST_PP_DEC_754 753
# define BOOST_PP_DEC_755 754
# define BOOST_PP_DEC_756 755
# define BOOST_PP_DEC_757 756
# define BOOST_PP_DEC_758 757
# define BOOST_PP_DEC_759 758
# define BOOST_PP_DEC_760 759
# define BOOST_PP_DEC_761 760
# define BOOST_PP_DEC_762 761
# define BOOST_PP_DEC_763 762
# define BOOST_PP_DEC_764 763
# define BOOST_PP_DEC_765 764
# define BOOST_PP_DEC_766 765
# define BOOST_PP_DEC_767 766
# define BOOST_PP_DEC_768 767
# define BOOST_PP_DEC_769 768
# define BOOST_PP_DEC_770 769
# define BOOST_PP_DEC_771 770
# define BOOST_PP_DEC_772 771
# define BOOST_PP_DEC_773 772
# define BOOST_PP_DEC_774 773
# define BOOST_PP_DEC_775 774
# define BOOST_PP_DEC_776 775
# define BOOST_PP_DEC_777 776
# define BOOST_PP_DEC_778 777
# define BOOST_PP_DEC_779 778
# define BOOST_PP_DEC_780 779
# define BOOST_PP_DEC_781 780
# define BOOST_PP_DEC_782 781
# define BOOST_PP_DEC_783 782
# define BOOST_PP_DEC_784 783
# define BOOST_PP_DEC_785 784
# define BOOST_PP_DEC_786 785
# define BOOST_PP_DEC_787 786
# define BOOST_PP_DEC_788 787
# define BOOST_PP_DEC_789 788
# define BOOST_PP_DEC_790 789
# define BOOST_PP_DEC_791 790
# define BOOST_PP_DEC_792 791
# define BOOST_PP_DEC_793 792
# define BOOST_PP_DEC_794 793
# define BOOST_PP_DEC_795 794
# define BOOST_PP_DEC_796 795
# define BOOST_PP_DEC_797 796
# define BOOST_PP_DEC_798 797
# define BOOST_PP_DEC_799 798
# define BOOST_PP_DEC_800 799
# define BOOST_PP_DEC_801 800
# define BOOST_PP_DEC_802 801
# define BOOST_PP_DEC_803 802
# define BOOST_PP_DEC_804 803
# define BOOST_PP_DEC_805 804
# define BOOST_PP_DEC_806 805
# define BOOST_PP_DEC_807 806
# define BOOST_PP_DEC_808 807
# define BOOST_PP_DEC_809 808
# define BOOST_PP_DEC_810 809
# define BOOST_PP_DEC_811 810
# define BOOST_PP_DEC_812 811
# define BOOST_PP_DEC_813 812
# define BOOST_PP_DEC_814 813
# define BOOST_PP_DEC_815 814
# define BOOST_PP_DEC_816 815
# define BOOST_PP_DEC_817 816
# define BOOST_PP_DEC_818 817
# define BOOST_PP_DEC_819 818
# define BOOST_PP_DEC_820 819
# define BOOST_PP_DEC_821 820
# define BOOST_PP_DEC_822 821
# define BOOST_PP_DEC_823 822
# define BOOST_PP_DEC_824 823
# define BOOST_PP_DEC_825 824
# define BOOST_PP_DEC_826 825
# define BOOST_PP_DEC_827 826
# define BOOST_PP_DEC_828 827
# define BOOST_PP_DEC_829 828
# define BOOST_PP_DEC_830 829
# define BOOST_PP_DEC_831 830
# define BOOST_PP_DEC_832 831
# define BOOST_PP_DEC_833 832
# define BOOST_PP_DEC_834 833
# define BOOST_PP_DEC_835 834
# define BOOST_PP_DEC_836 835
# define BOOST_PP_DEC_837 836
# define BOOST_PP_DEC_838 837
# define BOOST_PP_DEC_839 838
# define BOOST_PP_DEC_840 839
# define BOOST_PP_DEC_841 840
# define BOOST_PP_DEC_842 841
# define BOOST_PP_DEC_843 842
# define BOOST_PP_DEC_844 843
# define BOOST_PP_DEC_845 844
# define BOOST_PP_DEC_846 845
# define BOOST_PP_DEC_847 846
# define BOOST_PP_DEC_848 847
# define BOOST_PP_DEC_849 848
# define BOOST_PP_DEC_850 849
# define BOOST_PP_DEC_851 850
# define BOOST_PP_DEC_852 851
# define BOOST_PP_DEC_853 852
# define BOOST_PP_DEC_854 853
# define BOOST_PP_DEC_855 854
# define BOOST_PP_DEC_856 855
# define BOOST_PP_DEC_857 856
# define BOOST_PP_DEC_858 857
# define BOOST_PP_DEC_859 858
# define BOOST_PP_DEC_860 859
# define BOOST_PP_DEC_861 860
# define BOOST_PP_DEC_862 861
# define BOOST_PP_DEC_863 862
# define BOOST_PP_DEC_864 863
# define BOOST_PP_DEC_865 864
# define BOOST_PP_DEC_866 865
# define BOOST_PP_DEC_867 866
# define BOOST_PP_DEC_868 867
# define BOOST_PP_DEC_869 868
# define BOOST_PP_DEC_870 869
# define BOOST_PP_DEC_871 870
# define BOOST_PP_DEC_872 871
# define BOOST_PP_DEC_873 872
# define BOOST_PP_DEC_874 873
# define BOOST_PP_DEC_875 874
# define BOOST_PP_DEC_876 875
# define BOOST_PP_DEC_877 876
# define BOOST_PP_DEC_878 877
# define BOOST_PP_DEC_879 878
# define BOOST_PP_DEC_880 879
# define BOOST_PP_DEC_881 880
# define BOOST_PP_DEC_882 881
# define BOOST_PP_DEC_883 882
# define BOOST_PP_DEC_884 883
# define BOOST_PP_DEC_885 884
# define BOOST_PP_DEC_886 885
# define BOOST_PP_DEC_887 886
# define BOOST_PP_DEC_888 887
# define BOOST_PP_DEC_889 888
# define BOOST_PP_DEC_890 889
# define BOOST_PP_DEC_891 890
# define BOOST_PP_DEC_892 891
# define BOOST_PP_DEC_893 892
# define BOOST_PP_DEC_894 893
# define BOOST_PP_DEC_895 894
# define BOOST_PP_DEC_896 895
# define BOOST_PP_DEC_897 896
# define BOOST_PP_DEC_898 897
# define BOOST_PP_DEC_899 898
# define BOOST_PP_DEC_900 899
# define BOOST_PP_DEC_901 900
# define BOOST_PP_DEC_902 901
# define BOOST_PP_DEC_903 902
# define BOOST_PP_DEC_904 903
# define BOOST_PP_DEC_905 904
# define BOOST_PP_DEC_906 905
# define BOOST_PP_DEC_907 906
# define BOOST_PP_DEC_908 907
# define BOOST_PP_DEC_909 908
# define BOOST_PP_DEC_910 909
# define BOOST_PP_DEC_911 910
# define BOOST_PP_DEC_912 911
# define BOOST_PP_DEC_913 912
# define BOOST_PP_DEC_914 913
# define BOOST_PP_DEC_915 914
# define BOOST_PP_DEC_916 915
# define BOOST_PP_DEC_917 916
# define BOOST_PP_DEC_918 917
# define BOOST_PP_DEC_919 918
# define BOOST_PP_DEC_920 919
# define BOOST_PP_DEC_921 920
# define BOOST_PP_DEC_922 921
# define BOOST_PP_DEC_923 922
# define BOOST_PP_DEC_924 923
# define BOOST_PP_DEC_925 924
# define BOOST_PP_DEC_926 925
# define BOOST_PP_DEC_927 926
# define BOOST_PP_DEC_928 927
# define BOOST_PP_DEC_929 928
# define BOOST_PP_DEC_930 929
# define BOOST_PP_DEC_931 930
# define BOOST_PP_DEC_932 931
# define BOOST_PP_DEC_933 932
# define BOOST_PP_DEC_934 933
# define BOOST_PP_DEC_935 934
# define BOOST_PP_DEC_936 935
# define BOOST_PP_DEC_937 936
# define BOOST_PP_DEC_938 937
# define BOOST_PP_DEC_939 938
# define BOOST_PP_DEC_940 939
# define BOOST_PP_DEC_941 940
# define BOOST_PP_DEC_942 941
# define BOOST_PP_DEC_943 942
# define BOOST_PP_DEC_944 943
# define BOOST_PP_DEC_945 944
# define BOOST_PP_DEC_946 945
# define BOOST_PP_DEC_947 946
# define BOOST_PP_DEC_948 947
# define BOOST_PP_DEC_949 948
# define BOOST_PP_DEC_950 949
# define BOOST_PP_DEC_951 950
# define BOOST_PP_DEC_952 951
# define BOOST_PP_DEC_953 952
# define BOOST_PP_DEC_954 953
# define BOOST_PP_DEC_955 954
# define BOOST_PP_DEC_956 955
# define BOOST_PP_DEC_957 956
# define BOOST_PP_DEC_958 957
# define BOOST_PP_DEC_959 958
# define BOOST_PP_DEC_960 959
# define BOOST_PP_DEC_961 960
# define BOOST_PP_DEC_962 961
# define BOOST_PP_DEC_963 962
# define BOOST_PP_DEC_964 963
# define BOOST_PP_DEC_965 964
# define BOOST_PP_DEC_966 965
# define BOOST_PP_DEC_967 966
# define BOOST_PP_DEC_968 967
# define BOOST_PP_DEC_969 968
# define BOOST_PP_DEC_970 969
# define BOOST_PP_DEC_971 970
# define BOOST_PP_DEC_972 971
# define BOOST_PP_DEC_973 972
# define BOOST_PP_DEC_974 973
# define BOOST_PP_DEC_975 974
# define BOOST_PP_DEC_976 975
# define BOOST_PP_DEC_977 976
# define BOOST_PP_DEC_978 977
# define BOOST_PP_DEC_979 978
# define BOOST_PP_DEC_980 979
# define BOOST_PP_DEC_981 980
# define BOOST_PP_DEC_982 981
# define BOOST_PP_DEC_983 982
# define BOOST_PP_DEC_984 983
# define BOOST_PP_DEC_985 984
# define BOOST_PP_DEC_986 985
# define BOOST_PP_DEC_987 986
# define BOOST_PP_DEC_988 987
# define BOOST_PP_DEC_989 988
# define BOOST_PP_DEC_990 989
# define BOOST_PP_DEC_991 990
# define BOOST_PP_DEC_992 991
# define BOOST_PP_DEC_993 992
# define BOOST_PP_DEC_994 993
# define BOOST_PP_DEC_995 994
# define BOOST_PP_DEC_996 995
# define BOOST_PP_DEC_997 996
# define BOOST_PP_DEC_998 997
# define BOOST_PP_DEC_999 998
# define BOOST_PP_DEC_1000 999
# define BOOST_PP_DEC_1001 1000
# define BOOST_PP_DEC_1002 1001
# define BOOST_PP_DEC_1003 1002
# define BOOST_PP_DEC_1004 1003
# define BOOST_PP_DEC_1005 1004
# define BOOST_PP_DEC_1006 1005
# define BOOST_PP_DEC_1007 1006
# define BOOST_PP_DEC_1008 1007
# define BOOST_PP_DEC_1009 1008
# define BOOST_PP_DEC_1010 1009
# define BOOST_PP_DEC_1011 1010
# define BOOST_PP_DEC_1012 1011
# define BOOST_PP_DEC_1013 1012
# define BOOST_PP_DEC_1014 1013
# define BOOST_PP_DEC_1015 1014
# define BOOST_PP_DEC_1016 1015
# define BOOST_PP_DEC_1017 1016
# define BOOST_PP_DEC_1018 1017
# define BOOST_PP_DEC_1019 1018
# define BOOST_PP_DEC_1020 1019
# define BOOST_PP_DEC_1021 1020
# define BOOST_PP_DEC_1022 1021
# define BOOST_PP_DEC_1023 1022
# define BOOST_PP_DEC_1024 1023
# define BOOST_PP_DEC_1025 1024
#
# endif

View File

@ -0,0 +1,276 @@
# /* Copyright (C) 2001
# * Housemarque Oy
# * http://www.housemarque.com
# *
# * 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)
# */
#
# /* Revised by Paul Mensonides (2002) */
#
# /* See http://www.boost.org for most recent version. */
#
# ifndef BOOST_PREPROCESSOR_ARITHMETIC_DEC_256_HPP
# define BOOST_PREPROCESSOR_ARITHMETIC_DEC_256_HPP
#
# define BOOST_PP_DEC_0 0
# define BOOST_PP_DEC_1 0
# define BOOST_PP_DEC_2 1
# define BOOST_PP_DEC_3 2
# define BOOST_PP_DEC_4 3
# define BOOST_PP_DEC_5 4
# define BOOST_PP_DEC_6 5
# define BOOST_PP_DEC_7 6
# define BOOST_PP_DEC_8 7
# define BOOST_PP_DEC_9 8
# define BOOST_PP_DEC_10 9
# define BOOST_PP_DEC_11 10
# define BOOST_PP_DEC_12 11
# define BOOST_PP_DEC_13 12
# define BOOST_PP_DEC_14 13
# define BOOST_PP_DEC_15 14
# define BOOST_PP_DEC_16 15
# define BOOST_PP_DEC_17 16
# define BOOST_PP_DEC_18 17
# define BOOST_PP_DEC_19 18
# define BOOST_PP_DEC_20 19
# define BOOST_PP_DEC_21 20
# define BOOST_PP_DEC_22 21
# define BOOST_PP_DEC_23 22
# define BOOST_PP_DEC_24 23
# define BOOST_PP_DEC_25 24
# define BOOST_PP_DEC_26 25
# define BOOST_PP_DEC_27 26
# define BOOST_PP_DEC_28 27
# define BOOST_PP_DEC_29 28
# define BOOST_PP_DEC_30 29
# define BOOST_PP_DEC_31 30
# define BOOST_PP_DEC_32 31
# define BOOST_PP_DEC_33 32
# define BOOST_PP_DEC_34 33
# define BOOST_PP_DEC_35 34
# define BOOST_PP_DEC_36 35
# define BOOST_PP_DEC_37 36
# define BOOST_PP_DEC_38 37
# define BOOST_PP_DEC_39 38
# define BOOST_PP_DEC_40 39
# define BOOST_PP_DEC_41 40
# define BOOST_PP_DEC_42 41
# define BOOST_PP_DEC_43 42
# define BOOST_PP_DEC_44 43
# define BOOST_PP_DEC_45 44
# define BOOST_PP_DEC_46 45
# define BOOST_PP_DEC_47 46
# define BOOST_PP_DEC_48 47
# define BOOST_PP_DEC_49 48
# define BOOST_PP_DEC_50 49
# define BOOST_PP_DEC_51 50
# define BOOST_PP_DEC_52 51
# define BOOST_PP_DEC_53 52
# define BOOST_PP_DEC_54 53
# define BOOST_PP_DEC_55 54
# define BOOST_PP_DEC_56 55
# define BOOST_PP_DEC_57 56
# define BOOST_PP_DEC_58 57
# define BOOST_PP_DEC_59 58
# define BOOST_PP_DEC_60 59
# define BOOST_PP_DEC_61 60
# define BOOST_PP_DEC_62 61
# define BOOST_PP_DEC_63 62
# define BOOST_PP_DEC_64 63
# define BOOST_PP_DEC_65 64
# define BOOST_PP_DEC_66 65
# define BOOST_PP_DEC_67 66
# define BOOST_PP_DEC_68 67
# define BOOST_PP_DEC_69 68
# define BOOST_PP_DEC_70 69
# define BOOST_PP_DEC_71 70
# define BOOST_PP_DEC_72 71
# define BOOST_PP_DEC_73 72
# define BOOST_PP_DEC_74 73
# define BOOST_PP_DEC_75 74
# define BOOST_PP_DEC_76 75
# define BOOST_PP_DEC_77 76
# define BOOST_PP_DEC_78 77
# define BOOST_PP_DEC_79 78
# define BOOST_PP_DEC_80 79
# define BOOST_PP_DEC_81 80
# define BOOST_PP_DEC_82 81
# define BOOST_PP_DEC_83 82
# define BOOST_PP_DEC_84 83
# define BOOST_PP_DEC_85 84
# define BOOST_PP_DEC_86 85
# define BOOST_PP_DEC_87 86
# define BOOST_PP_DEC_88 87
# define BOOST_PP_DEC_89 88
# define BOOST_PP_DEC_90 89
# define BOOST_PP_DEC_91 90
# define BOOST_PP_DEC_92 91
# define BOOST_PP_DEC_93 92
# define BOOST_PP_DEC_94 93
# define BOOST_PP_DEC_95 94
# define BOOST_PP_DEC_96 95
# define BOOST_PP_DEC_97 96
# define BOOST_PP_DEC_98 97
# define BOOST_PP_DEC_99 98
# define BOOST_PP_DEC_100 99
# define BOOST_PP_DEC_101 100
# define BOOST_PP_DEC_102 101
# define BOOST_PP_DEC_103 102
# define BOOST_PP_DEC_104 103
# define BOOST_PP_DEC_105 104
# define BOOST_PP_DEC_106 105
# define BOOST_PP_DEC_107 106
# define BOOST_PP_DEC_108 107
# define BOOST_PP_DEC_109 108
# define BOOST_PP_DEC_110 109
# define BOOST_PP_DEC_111 110
# define BOOST_PP_DEC_112 111
# define BOOST_PP_DEC_113 112
# define BOOST_PP_DEC_114 113
# define BOOST_PP_DEC_115 114
# define BOOST_PP_DEC_116 115
# define BOOST_PP_DEC_117 116
# define BOOST_PP_DEC_118 117
# define BOOST_PP_DEC_119 118
# define BOOST_PP_DEC_120 119
# define BOOST_PP_DEC_121 120
# define BOOST_PP_DEC_122 121
# define BOOST_PP_DEC_123 122
# define BOOST_PP_DEC_124 123
# define BOOST_PP_DEC_125 124
# define BOOST_PP_DEC_126 125
# define BOOST_PP_DEC_127 126
# define BOOST_PP_DEC_128 127
# define BOOST_PP_DEC_129 128
# define BOOST_PP_DEC_130 129
# define BOOST_PP_DEC_131 130
# define BOOST_PP_DEC_132 131
# define BOOST_PP_DEC_133 132
# define BOOST_PP_DEC_134 133
# define BOOST_PP_DEC_135 134
# define BOOST_PP_DEC_136 135
# define BOOST_PP_DEC_137 136
# define BOOST_PP_DEC_138 137
# define BOOST_PP_DEC_139 138
# define BOOST_PP_DEC_140 139
# define BOOST_PP_DEC_141 140
# define BOOST_PP_DEC_142 141
# define BOOST_PP_DEC_143 142
# define BOOST_PP_DEC_144 143
# define BOOST_PP_DEC_145 144
# define BOOST_PP_DEC_146 145
# define BOOST_PP_DEC_147 146
# define BOOST_PP_DEC_148 147
# define BOOST_PP_DEC_149 148
# define BOOST_PP_DEC_150 149
# define BOOST_PP_DEC_151 150
# define BOOST_PP_DEC_152 151
# define BOOST_PP_DEC_153 152
# define BOOST_PP_DEC_154 153
# define BOOST_PP_DEC_155 154
# define BOOST_PP_DEC_156 155
# define BOOST_PP_DEC_157 156
# define BOOST_PP_DEC_158 157
# define BOOST_PP_DEC_159 158
# define BOOST_PP_DEC_160 159
# define BOOST_PP_DEC_161 160
# define BOOST_PP_DEC_162 161
# define BOOST_PP_DEC_163 162
# define BOOST_PP_DEC_164 163
# define BOOST_PP_DEC_165 164
# define BOOST_PP_DEC_166 165
# define BOOST_PP_DEC_167 166
# define BOOST_PP_DEC_168 167
# define BOOST_PP_DEC_169 168
# define BOOST_PP_DEC_170 169
# define BOOST_PP_DEC_171 170
# define BOOST_PP_DEC_172 171
# define BOOST_PP_DEC_173 172
# define BOOST_PP_DEC_174 173
# define BOOST_PP_DEC_175 174
# define BOOST_PP_DEC_176 175
# define BOOST_PP_DEC_177 176
# define BOOST_PP_DEC_178 177
# define BOOST_PP_DEC_179 178
# define BOOST_PP_DEC_180 179
# define BOOST_PP_DEC_181 180
# define BOOST_PP_DEC_182 181
# define BOOST_PP_DEC_183 182
# define BOOST_PP_DEC_184 183
# define BOOST_PP_DEC_185 184
# define BOOST_PP_DEC_186 185
# define BOOST_PP_DEC_187 186
# define BOOST_PP_DEC_188 187
# define BOOST_PP_DEC_189 188
# define BOOST_PP_DEC_190 189
# define BOOST_PP_DEC_191 190
# define BOOST_PP_DEC_192 191
# define BOOST_PP_DEC_193 192
# define BOOST_PP_DEC_194 193
# define BOOST_PP_DEC_195 194
# define BOOST_PP_DEC_196 195
# define BOOST_PP_DEC_197 196
# define BOOST_PP_DEC_198 197
# define BOOST_PP_DEC_199 198
# define BOOST_PP_DEC_200 199
# define BOOST_PP_DEC_201 200
# define BOOST_PP_DEC_202 201
# define BOOST_PP_DEC_203 202
# define BOOST_PP_DEC_204 203
# define BOOST_PP_DEC_205 204
# define BOOST_PP_DEC_206 205
# define BOOST_PP_DEC_207 206
# define BOOST_PP_DEC_208 207
# define BOOST_PP_DEC_209 208
# define BOOST_PP_DEC_210 209
# define BOOST_PP_DEC_211 210
# define BOOST_PP_DEC_212 211
# define BOOST_PP_DEC_213 212
# define BOOST_PP_DEC_214 213
# define BOOST_PP_DEC_215 214
# define BOOST_PP_DEC_216 215
# define BOOST_PP_DEC_217 216
# define BOOST_PP_DEC_218 217
# define BOOST_PP_DEC_219 218
# define BOOST_PP_DEC_220 219
# define BOOST_PP_DEC_221 220
# define BOOST_PP_DEC_222 221
# define BOOST_PP_DEC_223 222
# define BOOST_PP_DEC_224 223
# define BOOST_PP_DEC_225 224
# define BOOST_PP_DEC_226 225
# define BOOST_PP_DEC_227 226
# define BOOST_PP_DEC_228 227
# define BOOST_PP_DEC_229 228
# define BOOST_PP_DEC_230 229
# define BOOST_PP_DEC_231 230
# define BOOST_PP_DEC_232 231
# define BOOST_PP_DEC_233 232
# define BOOST_PP_DEC_234 233
# define BOOST_PP_DEC_235 234
# define BOOST_PP_DEC_236 235
# define BOOST_PP_DEC_237 236
# define BOOST_PP_DEC_238 237
# define BOOST_PP_DEC_239 238
# define BOOST_PP_DEC_240 239
# define BOOST_PP_DEC_241 240
# define BOOST_PP_DEC_242 241
# define BOOST_PP_DEC_243 242
# define BOOST_PP_DEC_244 243
# define BOOST_PP_DEC_245 244
# define BOOST_PP_DEC_246 245
# define BOOST_PP_DEC_247 246
# define BOOST_PP_DEC_248 247
# define BOOST_PP_DEC_249 248
# define BOOST_PP_DEC_250 249
# define BOOST_PP_DEC_251 250
# define BOOST_PP_DEC_252 251
# define BOOST_PP_DEC_253 252
# define BOOST_PP_DEC_254 253
# define BOOST_PP_DEC_255 254
# define BOOST_PP_DEC_256 255
# define BOOST_PP_DEC_257 256
#
# endif

View File

@ -0,0 +1,275 @@
# /* Copyright (C) 2001
# * Housemarque Oy
# * http://www.housemarque.com
# *
# * 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)
# */
#
# /* Revised by Paul Mensonides (2002) */
# /* Revised by Edward Diener (2020) */
#
# /* See http://www.boost.org for most recent version. */
#
# ifndef BOOST_PREPROCESSOR_ARITHMETIC_DEC_512_HPP
# define BOOST_PREPROCESSOR_ARITHMETIC_DEC_512_HPP
#
# define BOOST_PP_DEC_258 257
# define BOOST_PP_DEC_259 258
# define BOOST_PP_DEC_260 259
# define BOOST_PP_DEC_261 260
# define BOOST_PP_DEC_262 261
# define BOOST_PP_DEC_263 262
# define BOOST_PP_DEC_264 263
# define BOOST_PP_DEC_265 264
# define BOOST_PP_DEC_266 265
# define BOOST_PP_DEC_267 266
# define BOOST_PP_DEC_268 267
# define BOOST_PP_DEC_269 268
# define BOOST_PP_DEC_270 269
# define BOOST_PP_DEC_271 270
# define BOOST_PP_DEC_272 271
# define BOOST_PP_DEC_273 272
# define BOOST_PP_DEC_274 273
# define BOOST_PP_DEC_275 274
# define BOOST_PP_DEC_276 275
# define BOOST_PP_DEC_277 276
# define BOOST_PP_DEC_278 277
# define BOOST_PP_DEC_279 278
# define BOOST_PP_DEC_280 279
# define BOOST_PP_DEC_281 280
# define BOOST_PP_DEC_282 281
# define BOOST_PP_DEC_283 282
# define BOOST_PP_DEC_284 283
# define BOOST_PP_DEC_285 284
# define BOOST_PP_DEC_286 285
# define BOOST_PP_DEC_287 286
# define BOOST_PP_DEC_288 287
# define BOOST_PP_DEC_289 288
# define BOOST_PP_DEC_290 289
# define BOOST_PP_DEC_291 290
# define BOOST_PP_DEC_292 291
# define BOOST_PP_DEC_293 292
# define BOOST_PP_DEC_294 293
# define BOOST_PP_DEC_295 294
# define BOOST_PP_DEC_296 295
# define BOOST_PP_DEC_297 296
# define BOOST_PP_DEC_298 297
# define BOOST_PP_DEC_299 298
# define BOOST_PP_DEC_300 299
# define BOOST_PP_DEC_301 300
# define BOOST_PP_DEC_302 301
# define BOOST_PP_DEC_303 302
# define BOOST_PP_DEC_304 303
# define BOOST_PP_DEC_305 304
# define BOOST_PP_DEC_306 305
# define BOOST_PP_DEC_307 306
# define BOOST_PP_DEC_308 307
# define BOOST_PP_DEC_309 308
# define BOOST_PP_DEC_310 309
# define BOOST_PP_DEC_311 310
# define BOOST_PP_DEC_312 311
# define BOOST_PP_DEC_313 312
# define BOOST_PP_DEC_314 313
# define BOOST_PP_DEC_315 314
# define BOOST_PP_DEC_316 315
# define BOOST_PP_DEC_317 316
# define BOOST_PP_DEC_318 317
# define BOOST_PP_DEC_319 318
# define BOOST_PP_DEC_320 319
# define BOOST_PP_DEC_321 320
# define BOOST_PP_DEC_322 321
# define BOOST_PP_DEC_323 322
# define BOOST_PP_DEC_324 323
# define BOOST_PP_DEC_325 324
# define BOOST_PP_DEC_326 325
# define BOOST_PP_DEC_327 326
# define BOOST_PP_DEC_328 327
# define BOOST_PP_DEC_329 328
# define BOOST_PP_DEC_330 329
# define BOOST_PP_DEC_331 330
# define BOOST_PP_DEC_332 331
# define BOOST_PP_DEC_333 332
# define BOOST_PP_DEC_334 333
# define BOOST_PP_DEC_335 334
# define BOOST_PP_DEC_336 335
# define BOOST_PP_DEC_337 336
# define BOOST_PP_DEC_338 337
# define BOOST_PP_DEC_339 338
# define BOOST_PP_DEC_340 339
# define BOOST_PP_DEC_341 340
# define BOOST_PP_DEC_342 341
# define BOOST_PP_DEC_343 342
# define BOOST_PP_DEC_344 343
# define BOOST_PP_DEC_345 344
# define BOOST_PP_DEC_346 345
# define BOOST_PP_DEC_347 346
# define BOOST_PP_DEC_348 347
# define BOOST_PP_DEC_349 348
# define BOOST_PP_DEC_350 349
# define BOOST_PP_DEC_351 350
# define BOOST_PP_DEC_352 351
# define BOOST_PP_DEC_353 352
# define BOOST_PP_DEC_354 353
# define BOOST_PP_DEC_355 354
# define BOOST_PP_DEC_356 355
# define BOOST_PP_DEC_357 356
# define BOOST_PP_DEC_358 357
# define BOOST_PP_DEC_359 358
# define BOOST_PP_DEC_360 359
# define BOOST_PP_DEC_361 360
# define BOOST_PP_DEC_362 361
# define BOOST_PP_DEC_363 362
# define BOOST_PP_DEC_364 363
# define BOOST_PP_DEC_365 364
# define BOOST_PP_DEC_366 365
# define BOOST_PP_DEC_367 366
# define BOOST_PP_DEC_368 367
# define BOOST_PP_DEC_369 368
# define BOOST_PP_DEC_370 369
# define BOOST_PP_DEC_371 370
# define BOOST_PP_DEC_372 371
# define BOOST_PP_DEC_373 372
# define BOOST_PP_DEC_374 373
# define BOOST_PP_DEC_375 374
# define BOOST_PP_DEC_376 375
# define BOOST_PP_DEC_377 376
# define BOOST_PP_DEC_378 377
# define BOOST_PP_DEC_379 378
# define BOOST_PP_DEC_380 379
# define BOOST_PP_DEC_381 380
# define BOOST_PP_DEC_382 381
# define BOOST_PP_DEC_383 382
# define BOOST_PP_DEC_384 383
# define BOOST_PP_DEC_385 384
# define BOOST_PP_DEC_386 385
# define BOOST_PP_DEC_387 386
# define BOOST_PP_DEC_388 387
# define BOOST_PP_DEC_389 388
# define BOOST_PP_DEC_390 389
# define BOOST_PP_DEC_391 390
# define BOOST_PP_DEC_392 391
# define BOOST_PP_DEC_393 392
# define BOOST_PP_DEC_394 393
# define BOOST_PP_DEC_395 394
# define BOOST_PP_DEC_396 395
# define BOOST_PP_DEC_397 396
# define BOOST_PP_DEC_398 397
# define BOOST_PP_DEC_399 398
# define BOOST_PP_DEC_400 399
# define BOOST_PP_DEC_401 400
# define BOOST_PP_DEC_402 401
# define BOOST_PP_DEC_403 402
# define BOOST_PP_DEC_404 403
# define BOOST_PP_DEC_405 404
# define BOOST_PP_DEC_406 405
# define BOOST_PP_DEC_407 406
# define BOOST_PP_DEC_408 407
# define BOOST_PP_DEC_409 408
# define BOOST_PP_DEC_410 409
# define BOOST_PP_DEC_411 410
# define BOOST_PP_DEC_412 411
# define BOOST_PP_DEC_413 412
# define BOOST_PP_DEC_414 413
# define BOOST_PP_DEC_415 414
# define BOOST_PP_DEC_416 415
# define BOOST_PP_DEC_417 416
# define BOOST_PP_DEC_418 417
# define BOOST_PP_DEC_419 418
# define BOOST_PP_DEC_420 419
# define BOOST_PP_DEC_421 420
# define BOOST_PP_DEC_422 421
# define BOOST_PP_DEC_423 422
# define BOOST_PP_DEC_424 423
# define BOOST_PP_DEC_425 424
# define BOOST_PP_DEC_426 425
# define BOOST_PP_DEC_427 426
# define BOOST_PP_DEC_428 427
# define BOOST_PP_DEC_429 428
# define BOOST_PP_DEC_430 429
# define BOOST_PP_DEC_431 430
# define BOOST_PP_DEC_432 431
# define BOOST_PP_DEC_433 432
# define BOOST_PP_DEC_434 433
# define BOOST_PP_DEC_435 434
# define BOOST_PP_DEC_436 435
# define BOOST_PP_DEC_437 436
# define BOOST_PP_DEC_438 437
# define BOOST_PP_DEC_439 438
# define BOOST_PP_DEC_440 439
# define BOOST_PP_DEC_441 440
# define BOOST_PP_DEC_442 441
# define BOOST_PP_DEC_443 442
# define BOOST_PP_DEC_444 443
# define BOOST_PP_DEC_445 444
# define BOOST_PP_DEC_446 445
# define BOOST_PP_DEC_447 446
# define BOOST_PP_DEC_448 447
# define BOOST_PP_DEC_449 448
# define BOOST_PP_DEC_450 449
# define BOOST_PP_DEC_451 450
# define BOOST_PP_DEC_452 451
# define BOOST_PP_DEC_453 452
# define BOOST_PP_DEC_454 453
# define BOOST_PP_DEC_455 454
# define BOOST_PP_DEC_456 455
# define BOOST_PP_DEC_457 456
# define BOOST_PP_DEC_458 457
# define BOOST_PP_DEC_459 458
# define BOOST_PP_DEC_460 459
# define BOOST_PP_DEC_461 460
# define BOOST_PP_DEC_462 461
# define BOOST_PP_DEC_463 462
# define BOOST_PP_DEC_464 463
# define BOOST_PP_DEC_465 464
# define BOOST_PP_DEC_466 465
# define BOOST_PP_DEC_467 466
# define BOOST_PP_DEC_468 467
# define BOOST_PP_DEC_469 468
# define BOOST_PP_DEC_470 469
# define BOOST_PP_DEC_471 470
# define BOOST_PP_DEC_472 471
# define BOOST_PP_DEC_473 472
# define BOOST_PP_DEC_474 473
# define BOOST_PP_DEC_475 474
# define BOOST_PP_DEC_476 475
# define BOOST_PP_DEC_477 476
# define BOOST_PP_DEC_478 477
# define BOOST_PP_DEC_479 478
# define BOOST_PP_DEC_480 479
# define BOOST_PP_DEC_481 480
# define BOOST_PP_DEC_482 481
# define BOOST_PP_DEC_483 482
# define BOOST_PP_DEC_484 483
# define BOOST_PP_DEC_485 484
# define BOOST_PP_DEC_486 485
# define BOOST_PP_DEC_487 486
# define BOOST_PP_DEC_488 487
# define BOOST_PP_DEC_489 488
# define BOOST_PP_DEC_490 489
# define BOOST_PP_DEC_491 490
# define BOOST_PP_DEC_492 491
# define BOOST_PP_DEC_493 492
# define BOOST_PP_DEC_494 493
# define BOOST_PP_DEC_495 494
# define BOOST_PP_DEC_496 495
# define BOOST_PP_DEC_497 496
# define BOOST_PP_DEC_498 497
# define BOOST_PP_DEC_499 498
# define BOOST_PP_DEC_500 499
# define BOOST_PP_DEC_501 500
# define BOOST_PP_DEC_502 501
# define BOOST_PP_DEC_503 502
# define BOOST_PP_DEC_504 503
# define BOOST_PP_DEC_505 504
# define BOOST_PP_DEC_506 505
# define BOOST_PP_DEC_507 506
# define BOOST_PP_DEC_508 507
# define BOOST_PP_DEC_509 508
# define BOOST_PP_DEC_510 509
# define BOOST_PP_DEC_511 510
# define BOOST_PP_DEC_512 511
# define BOOST_PP_DEC_513 512
#
# endif

View File

@ -0,0 +1,536 @@
# /* Copyright (C) 2001
# * Housemarque Oy
# * http://www.housemarque.com
# *
# * 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)
# */
#
# /* Revised by Paul Mensonides (2002) */
# /* Revised by Edward Diener (2020) */
#
# /* See http://www.boost.org for most recent version. */
#
# ifndef BOOST_PREPROCESSOR_ARITHMETIC_INC_1024_HPP
# define BOOST_PREPROCESSOR_ARITHMETIC_INC_1024_HPP
#
# if defined(BOOST_PP_INC_512)
# undef BOOST_PP_INC_512
# endif
#
# define BOOST_PP_INC_512 513
# define BOOST_PP_INC_513 514
# define BOOST_PP_INC_514 515
# define BOOST_PP_INC_515 516
# define BOOST_PP_INC_516 517
# define BOOST_PP_INC_517 518
# define BOOST_PP_INC_518 519
# define BOOST_PP_INC_519 520
# define BOOST_PP_INC_520 521
# define BOOST_PP_INC_521 522
# define BOOST_PP_INC_522 523
# define BOOST_PP_INC_523 524
# define BOOST_PP_INC_524 525
# define BOOST_PP_INC_525 526
# define BOOST_PP_INC_526 527
# define BOOST_PP_INC_527 528
# define BOOST_PP_INC_528 529
# define BOOST_PP_INC_529 530
# define BOOST_PP_INC_530 531
# define BOOST_PP_INC_531 532
# define BOOST_PP_INC_532 533
# define BOOST_PP_INC_533 534
# define BOOST_PP_INC_534 535
# define BOOST_PP_INC_535 536
# define BOOST_PP_INC_536 537
# define BOOST_PP_INC_537 538
# define BOOST_PP_INC_538 539
# define BOOST_PP_INC_539 540
# define BOOST_PP_INC_540 541
# define BOOST_PP_INC_541 542
# define BOOST_PP_INC_542 543
# define BOOST_PP_INC_543 544
# define BOOST_PP_INC_544 545
# define BOOST_PP_INC_545 546
# define BOOST_PP_INC_546 547
# define BOOST_PP_INC_547 548
# define BOOST_PP_INC_548 549
# define BOOST_PP_INC_549 550
# define BOOST_PP_INC_550 551
# define BOOST_PP_INC_551 552
# define BOOST_PP_INC_552 553
# define BOOST_PP_INC_553 554
# define BOOST_PP_INC_554 555
# define BOOST_PP_INC_555 556
# define BOOST_PP_INC_556 557
# define BOOST_PP_INC_557 558
# define BOOST_PP_INC_558 559
# define BOOST_PP_INC_559 560
# define BOOST_PP_INC_560 561
# define BOOST_PP_INC_561 562
# define BOOST_PP_INC_562 563
# define BOOST_PP_INC_563 564
# define BOOST_PP_INC_564 565
# define BOOST_PP_INC_565 566
# define BOOST_PP_INC_566 567
# define BOOST_PP_INC_567 568
# define BOOST_PP_INC_568 569
# define BOOST_PP_INC_569 570
# define BOOST_PP_INC_570 571
# define BOOST_PP_INC_571 572
# define BOOST_PP_INC_572 573
# define BOOST_PP_INC_573 574
# define BOOST_PP_INC_574 575
# define BOOST_PP_INC_575 576
# define BOOST_PP_INC_576 577
# define BOOST_PP_INC_577 578
# define BOOST_PP_INC_578 579
# define BOOST_PP_INC_579 580
# define BOOST_PP_INC_580 581
# define BOOST_PP_INC_581 582
# define BOOST_PP_INC_582 583
# define BOOST_PP_INC_583 584
# define BOOST_PP_INC_584 585
# define BOOST_PP_INC_585 586
# define BOOST_PP_INC_586 587
# define BOOST_PP_INC_587 588
# define BOOST_PP_INC_588 589
# define BOOST_PP_INC_589 590
# define BOOST_PP_INC_590 591
# define BOOST_PP_INC_591 592
# define BOOST_PP_INC_592 593
# define BOOST_PP_INC_593 594
# define BOOST_PP_INC_594 595
# define BOOST_PP_INC_595 596
# define BOOST_PP_INC_596 597
# define BOOST_PP_INC_597 598
# define BOOST_PP_INC_598 599
# define BOOST_PP_INC_599 600
# define BOOST_PP_INC_600 601
# define BOOST_PP_INC_601 602
# define BOOST_PP_INC_602 603
# define BOOST_PP_INC_603 604
# define BOOST_PP_INC_604 605
# define BOOST_PP_INC_605 606
# define BOOST_PP_INC_606 607
# define BOOST_PP_INC_607 608
# define BOOST_PP_INC_608 609
# define BOOST_PP_INC_609 610
# define BOOST_PP_INC_610 611
# define BOOST_PP_INC_611 612
# define BOOST_PP_INC_612 613
# define BOOST_PP_INC_613 614
# define BOOST_PP_INC_614 615
# define BOOST_PP_INC_615 616
# define BOOST_PP_INC_616 617
# define BOOST_PP_INC_617 618
# define BOOST_PP_INC_618 619
# define BOOST_PP_INC_619 620
# define BOOST_PP_INC_620 621
# define BOOST_PP_INC_621 622
# define BOOST_PP_INC_622 623
# define BOOST_PP_INC_623 624
# define BOOST_PP_INC_624 625
# define BOOST_PP_INC_625 626
# define BOOST_PP_INC_626 627
# define BOOST_PP_INC_627 628
# define BOOST_PP_INC_628 629
# define BOOST_PP_INC_629 630
# define BOOST_PP_INC_630 631
# define BOOST_PP_INC_631 632
# define BOOST_PP_INC_632 633
# define BOOST_PP_INC_633 634
# define BOOST_PP_INC_634 635
# define BOOST_PP_INC_635 636
# define BOOST_PP_INC_636 637
# define BOOST_PP_INC_637 638
# define BOOST_PP_INC_638 639
# define BOOST_PP_INC_639 640
# define BOOST_PP_INC_640 641
# define BOOST_PP_INC_641 642
# define BOOST_PP_INC_642 643
# define BOOST_PP_INC_643 644
# define BOOST_PP_INC_644 645
# define BOOST_PP_INC_645 646
# define BOOST_PP_INC_646 647
# define BOOST_PP_INC_647 648
# define BOOST_PP_INC_648 649
# define BOOST_PP_INC_649 650
# define BOOST_PP_INC_650 651
# define BOOST_PP_INC_651 652
# define BOOST_PP_INC_652 653
# define BOOST_PP_INC_653 654
# define BOOST_PP_INC_654 655
# define BOOST_PP_INC_655 656
# define BOOST_PP_INC_656 657
# define BOOST_PP_INC_657 658
# define BOOST_PP_INC_658 659
# define BOOST_PP_INC_659 660
# define BOOST_PP_INC_660 661
# define BOOST_PP_INC_661 662
# define BOOST_PP_INC_662 663
# define BOOST_PP_INC_663 664
# define BOOST_PP_INC_664 665
# define BOOST_PP_INC_665 666
# define BOOST_PP_INC_666 667
# define BOOST_PP_INC_667 668
# define BOOST_PP_INC_668 669
# define BOOST_PP_INC_669 670
# define BOOST_PP_INC_670 671
# define BOOST_PP_INC_671 672
# define BOOST_PP_INC_672 673
# define BOOST_PP_INC_673 674
# define BOOST_PP_INC_674 675
# define BOOST_PP_INC_675 676
# define BOOST_PP_INC_676 677
# define BOOST_PP_INC_677 678
# define BOOST_PP_INC_678 679
# define BOOST_PP_INC_679 680
# define BOOST_PP_INC_680 681
# define BOOST_PP_INC_681 682
# define BOOST_PP_INC_682 683
# define BOOST_PP_INC_683 684
# define BOOST_PP_INC_684 685
# define BOOST_PP_INC_685 686
# define BOOST_PP_INC_686 687
# define BOOST_PP_INC_687 688
# define BOOST_PP_INC_688 689
# define BOOST_PP_INC_689 690
# define BOOST_PP_INC_690 691
# define BOOST_PP_INC_691 692
# define BOOST_PP_INC_692 693
# define BOOST_PP_INC_693 694
# define BOOST_PP_INC_694 695
# define BOOST_PP_INC_695 696
# define BOOST_PP_INC_696 697
# define BOOST_PP_INC_697 698
# define BOOST_PP_INC_698 699
# define BOOST_PP_INC_699 700
# define BOOST_PP_INC_700 701
# define BOOST_PP_INC_701 702
# define BOOST_PP_INC_702 703
# define BOOST_PP_INC_703 704
# define BOOST_PP_INC_704 705
# define BOOST_PP_INC_705 706
# define BOOST_PP_INC_706 707
# define BOOST_PP_INC_707 708
# define BOOST_PP_INC_708 709
# define BOOST_PP_INC_709 710
# define BOOST_PP_INC_710 711
# define BOOST_PP_INC_711 712
# define BOOST_PP_INC_712 713
# define BOOST_PP_INC_713 714
# define BOOST_PP_INC_714 715
# define BOOST_PP_INC_715 716
# define BOOST_PP_INC_716 717
# define BOOST_PP_INC_717 718
# define BOOST_PP_INC_718 719
# define BOOST_PP_INC_719 720
# define BOOST_PP_INC_720 721
# define BOOST_PP_INC_721 722
# define BOOST_PP_INC_722 723
# define BOOST_PP_INC_723 724
# define BOOST_PP_INC_724 725
# define BOOST_PP_INC_725 726
# define BOOST_PP_INC_726 727
# define BOOST_PP_INC_727 728
# define BOOST_PP_INC_728 729
# define BOOST_PP_INC_729 730
# define BOOST_PP_INC_730 731
# define BOOST_PP_INC_731 732
# define BOOST_PP_INC_732 733
# define BOOST_PP_INC_733 734
# define BOOST_PP_INC_734 735
# define BOOST_PP_INC_735 736
# define BOOST_PP_INC_736 737
# define BOOST_PP_INC_737 738
# define BOOST_PP_INC_738 739
# define BOOST_PP_INC_739 740
# define BOOST_PP_INC_740 741
# define BOOST_PP_INC_741 742
# define BOOST_PP_INC_742 743
# define BOOST_PP_INC_743 744
# define BOOST_PP_INC_744 745
# define BOOST_PP_INC_745 746
# define BOOST_PP_INC_746 747
# define BOOST_PP_INC_747 748
# define BOOST_PP_INC_748 749
# define BOOST_PP_INC_749 750
# define BOOST_PP_INC_750 751
# define BOOST_PP_INC_751 752
# define BOOST_PP_INC_752 753
# define BOOST_PP_INC_753 754
# define BOOST_PP_INC_754 755
# define BOOST_PP_INC_755 756
# define BOOST_PP_INC_756 757
# define BOOST_PP_INC_757 758
# define BOOST_PP_INC_758 759
# define BOOST_PP_INC_759 760
# define BOOST_PP_INC_760 761
# define BOOST_PP_INC_761 762
# define BOOST_PP_INC_762 763
# define BOOST_PP_INC_763 764
# define BOOST_PP_INC_764 765
# define BOOST_PP_INC_765 766
# define BOOST_PP_INC_766 767
# define BOOST_PP_INC_767 768
# define BOOST_PP_INC_768 769
# define BOOST_PP_INC_769 770
# define BOOST_PP_INC_770 771
# define BOOST_PP_INC_771 772
# define BOOST_PP_INC_772 773
# define BOOST_PP_INC_773 774
# define BOOST_PP_INC_774 775
# define BOOST_PP_INC_775 776
# define BOOST_PP_INC_776 777
# define BOOST_PP_INC_777 778
# define BOOST_PP_INC_778 779
# define BOOST_PP_INC_779 780
# define BOOST_PP_INC_780 781
# define BOOST_PP_INC_781 782
# define BOOST_PP_INC_782 783
# define BOOST_PP_INC_783 784
# define BOOST_PP_INC_784 785
# define BOOST_PP_INC_785 786
# define BOOST_PP_INC_786 787
# define BOOST_PP_INC_787 788
# define BOOST_PP_INC_788 789
# define BOOST_PP_INC_789 790
# define BOOST_PP_INC_790 791
# define BOOST_PP_INC_791 792
# define BOOST_PP_INC_792 793
# define BOOST_PP_INC_793 794
# define BOOST_PP_INC_794 795
# define BOOST_PP_INC_795 796
# define BOOST_PP_INC_796 797
# define BOOST_PP_INC_797 798
# define BOOST_PP_INC_798 799
# define BOOST_PP_INC_799 800
# define BOOST_PP_INC_800 801
# define BOOST_PP_INC_801 802
# define BOOST_PP_INC_802 803
# define BOOST_PP_INC_803 804
# define BOOST_PP_INC_804 805
# define BOOST_PP_INC_805 806
# define BOOST_PP_INC_806 807
# define BOOST_PP_INC_807 808
# define BOOST_PP_INC_808 809
# define BOOST_PP_INC_809 810
# define BOOST_PP_INC_810 811
# define BOOST_PP_INC_811 812
# define BOOST_PP_INC_812 813
# define BOOST_PP_INC_813 814
# define BOOST_PP_INC_814 815
# define BOOST_PP_INC_815 816
# define BOOST_PP_INC_816 817
# define BOOST_PP_INC_817 818
# define BOOST_PP_INC_818 819
# define BOOST_PP_INC_819 820
# define BOOST_PP_INC_820 821
# define BOOST_PP_INC_821 822
# define BOOST_PP_INC_822 823
# define BOOST_PP_INC_823 824
# define BOOST_PP_INC_824 825
# define BOOST_PP_INC_825 826
# define BOOST_PP_INC_826 827
# define BOOST_PP_INC_827 828
# define BOOST_PP_INC_828 829
# define BOOST_PP_INC_829 830
# define BOOST_PP_INC_830 831
# define BOOST_PP_INC_831 832
# define BOOST_PP_INC_832 833
# define BOOST_PP_INC_833 834
# define BOOST_PP_INC_834 835
# define BOOST_PP_INC_835 836
# define BOOST_PP_INC_836 837
# define BOOST_PP_INC_837 838
# define BOOST_PP_INC_838 839
# define BOOST_PP_INC_839 840
# define BOOST_PP_INC_840 841
# define BOOST_PP_INC_841 842
# define BOOST_PP_INC_842 843
# define BOOST_PP_INC_843 844
# define BOOST_PP_INC_844 845
# define BOOST_PP_INC_845 846
# define BOOST_PP_INC_846 847
# define BOOST_PP_INC_847 848
# define BOOST_PP_INC_848 849
# define BOOST_PP_INC_849 850
# define BOOST_PP_INC_850 851
# define BOOST_PP_INC_851 852
# define BOOST_PP_INC_852 853
# define BOOST_PP_INC_853 854
# define BOOST_PP_INC_854 855
# define BOOST_PP_INC_855 856
# define BOOST_PP_INC_856 857
# define BOOST_PP_INC_857 858
# define BOOST_PP_INC_858 859
# define BOOST_PP_INC_859 860
# define BOOST_PP_INC_860 861
# define BOOST_PP_INC_861 862
# define BOOST_PP_INC_862 863
# define BOOST_PP_INC_863 864
# define BOOST_PP_INC_864 865
# define BOOST_PP_INC_865 866
# define BOOST_PP_INC_866 867
# define BOOST_PP_INC_867 868
# define BOOST_PP_INC_868 869
# define BOOST_PP_INC_869 870
# define BOOST_PP_INC_870 871
# define BOOST_PP_INC_871 872
# define BOOST_PP_INC_872 873
# define BOOST_PP_INC_873 874
# define BOOST_PP_INC_874 875
# define BOOST_PP_INC_875 876
# define BOOST_PP_INC_876 877
# define BOOST_PP_INC_877 878
# define BOOST_PP_INC_878 879
# define BOOST_PP_INC_879 880
# define BOOST_PP_INC_880 881
# define BOOST_PP_INC_881 882
# define BOOST_PP_INC_882 883
# define BOOST_PP_INC_883 884
# define BOOST_PP_INC_884 885
# define BOOST_PP_INC_885 886
# define BOOST_PP_INC_886 887
# define BOOST_PP_INC_887 888
# define BOOST_PP_INC_888 889
# define BOOST_PP_INC_889 890
# define BOOST_PP_INC_890 891
# define BOOST_PP_INC_891 892
# define BOOST_PP_INC_892 893
# define BOOST_PP_INC_893 894
# define BOOST_PP_INC_894 895
# define BOOST_PP_INC_895 896
# define BOOST_PP_INC_896 897
# define BOOST_PP_INC_897 898
# define BOOST_PP_INC_898 899
# define BOOST_PP_INC_899 900
# define BOOST_PP_INC_900 901
# define BOOST_PP_INC_901 902
# define BOOST_PP_INC_902 903
# define BOOST_PP_INC_903 904
# define BOOST_PP_INC_904 905
# define BOOST_PP_INC_905 906
# define BOOST_PP_INC_906 907
# define BOOST_PP_INC_907 908
# define BOOST_PP_INC_908 909
# define BOOST_PP_INC_909 910
# define BOOST_PP_INC_910 911
# define BOOST_PP_INC_911 912
# define BOOST_PP_INC_912 913
# define BOOST_PP_INC_913 914
# define BOOST_PP_INC_914 915
# define BOOST_PP_INC_915 916
# define BOOST_PP_INC_916 917
# define BOOST_PP_INC_917 918
# define BOOST_PP_INC_918 919
# define BOOST_PP_INC_919 920
# define BOOST_PP_INC_920 921
# define BOOST_PP_INC_921 922
# define BOOST_PP_INC_922 923
# define BOOST_PP_INC_923 924
# define BOOST_PP_INC_924 925
# define BOOST_PP_INC_925 926
# define BOOST_PP_INC_926 927
# define BOOST_PP_INC_927 928
# define BOOST_PP_INC_928 929
# define BOOST_PP_INC_929 930
# define BOOST_PP_INC_930 931
# define BOOST_PP_INC_931 932
# define BOOST_PP_INC_932 933
# define BOOST_PP_INC_933 934
# define BOOST_PP_INC_934 935
# define BOOST_PP_INC_935 936
# define BOOST_PP_INC_936 937
# define BOOST_PP_INC_937 938
# define BOOST_PP_INC_938 939
# define BOOST_PP_INC_939 940
# define BOOST_PP_INC_940 941
# define BOOST_PP_INC_941 942
# define BOOST_PP_INC_942 943
# define BOOST_PP_INC_943 944
# define BOOST_PP_INC_944 945
# define BOOST_PP_INC_945 946
# define BOOST_PP_INC_946 947
# define BOOST_PP_INC_947 948
# define BOOST_PP_INC_948 949
# define BOOST_PP_INC_949 950
# define BOOST_PP_INC_950 951
# define BOOST_PP_INC_951 952
# define BOOST_PP_INC_952 953
# define BOOST_PP_INC_953 954
# define BOOST_PP_INC_954 955
# define BOOST_PP_INC_955 956
# define BOOST_PP_INC_956 957
# define BOOST_PP_INC_957 958
# define BOOST_PP_INC_958 959
# define BOOST_PP_INC_959 960
# define BOOST_PP_INC_960 961
# define BOOST_PP_INC_961 962
# define BOOST_PP_INC_962 963
# define BOOST_PP_INC_963 964
# define BOOST_PP_INC_964 965
# define BOOST_PP_INC_965 966
# define BOOST_PP_INC_966 967
# define BOOST_PP_INC_967 968
# define BOOST_PP_INC_968 969
# define BOOST_PP_INC_969 970
# define BOOST_PP_INC_970 971
# define BOOST_PP_INC_971 972
# define BOOST_PP_INC_972 973
# define BOOST_PP_INC_973 974
# define BOOST_PP_INC_974 975
# define BOOST_PP_INC_975 976
# define BOOST_PP_INC_976 977
# define BOOST_PP_INC_977 978
# define BOOST_PP_INC_978 979
# define BOOST_PP_INC_979 980
# define BOOST_PP_INC_980 981
# define BOOST_PP_INC_981 982
# define BOOST_PP_INC_982 983
# define BOOST_PP_INC_983 984
# define BOOST_PP_INC_984 985
# define BOOST_PP_INC_985 986
# define BOOST_PP_INC_986 987
# define BOOST_PP_INC_987 988
# define BOOST_PP_INC_988 989
# define BOOST_PP_INC_989 990
# define BOOST_PP_INC_990 991
# define BOOST_PP_INC_991 992
# define BOOST_PP_INC_992 993
# define BOOST_PP_INC_993 994
# define BOOST_PP_INC_994 995
# define BOOST_PP_INC_995 996
# define BOOST_PP_INC_996 997
# define BOOST_PP_INC_997 998
# define BOOST_PP_INC_998 999
# define BOOST_PP_INC_999 1000
# define BOOST_PP_INC_1000 1001
# define BOOST_PP_INC_1001 1002
# define BOOST_PP_INC_1002 1003
# define BOOST_PP_INC_1003 1004
# define BOOST_PP_INC_1004 1005
# define BOOST_PP_INC_1005 1006
# define BOOST_PP_INC_1006 1007
# define BOOST_PP_INC_1007 1008
# define BOOST_PP_INC_1008 1009
# define BOOST_PP_INC_1009 1010
# define BOOST_PP_INC_1010 1011
# define BOOST_PP_INC_1011 1012
# define BOOST_PP_INC_1012 1013
# define BOOST_PP_INC_1013 1014
# define BOOST_PP_INC_1014 1015
# define BOOST_PP_INC_1015 1016
# define BOOST_PP_INC_1016 1017
# define BOOST_PP_INC_1017 1018
# define BOOST_PP_INC_1018 1019
# define BOOST_PP_INC_1019 1020
# define BOOST_PP_INC_1020 1021
# define BOOST_PP_INC_1021 1022
# define BOOST_PP_INC_1022 1023
# define BOOST_PP_INC_1023 1024
# define BOOST_PP_INC_1024 1024
#
# endif

View File

@ -0,0 +1,275 @@
# /* Copyright (C) 2001
# * Housemarque Oy
# * http://www.housemarque.com
# *
# * 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)
# */
#
# /* Revised by Paul Mensonides (2002) */
#
# /* See http://www.boost.org for most recent version. */
#
# ifndef BOOST_PREPROCESSOR_ARITHMETIC_INC_256_HPP
# define BOOST_PREPROCESSOR_ARITHMETIC_INC_256_HPP
#
# define BOOST_PP_INC_0 1
# define BOOST_PP_INC_1 2
# define BOOST_PP_INC_2 3
# define BOOST_PP_INC_3 4
# define BOOST_PP_INC_4 5
# define BOOST_PP_INC_5 6
# define BOOST_PP_INC_6 7
# define BOOST_PP_INC_7 8
# define BOOST_PP_INC_8 9
# define BOOST_PP_INC_9 10
# define BOOST_PP_INC_10 11
# define BOOST_PP_INC_11 12
# define BOOST_PP_INC_12 13
# define BOOST_PP_INC_13 14
# define BOOST_PP_INC_14 15
# define BOOST_PP_INC_15 16
# define BOOST_PP_INC_16 17
# define BOOST_PP_INC_17 18
# define BOOST_PP_INC_18 19
# define BOOST_PP_INC_19 20
# define BOOST_PP_INC_20 21
# define BOOST_PP_INC_21 22
# define BOOST_PP_INC_22 23
# define BOOST_PP_INC_23 24
# define BOOST_PP_INC_24 25
# define BOOST_PP_INC_25 26
# define BOOST_PP_INC_26 27
# define BOOST_PP_INC_27 28
# define BOOST_PP_INC_28 29
# define BOOST_PP_INC_29 30
# define BOOST_PP_INC_30 31
# define BOOST_PP_INC_31 32
# define BOOST_PP_INC_32 33
# define BOOST_PP_INC_33 34
# define BOOST_PP_INC_34 35
# define BOOST_PP_INC_35 36
# define BOOST_PP_INC_36 37
# define BOOST_PP_INC_37 38
# define BOOST_PP_INC_38 39
# define BOOST_PP_INC_39 40
# define BOOST_PP_INC_40 41
# define BOOST_PP_INC_41 42
# define BOOST_PP_INC_42 43
# define BOOST_PP_INC_43 44
# define BOOST_PP_INC_44 45
# define BOOST_PP_INC_45 46
# define BOOST_PP_INC_46 47
# define BOOST_PP_INC_47 48
# define BOOST_PP_INC_48 49
# define BOOST_PP_INC_49 50
# define BOOST_PP_INC_50 51
# define BOOST_PP_INC_51 52
# define BOOST_PP_INC_52 53
# define BOOST_PP_INC_53 54
# define BOOST_PP_INC_54 55
# define BOOST_PP_INC_55 56
# define BOOST_PP_INC_56 57
# define BOOST_PP_INC_57 58
# define BOOST_PP_INC_58 59
# define BOOST_PP_INC_59 60
# define BOOST_PP_INC_60 61
# define BOOST_PP_INC_61 62
# define BOOST_PP_INC_62 63
# define BOOST_PP_INC_63 64
# define BOOST_PP_INC_64 65
# define BOOST_PP_INC_65 66
# define BOOST_PP_INC_66 67
# define BOOST_PP_INC_67 68
# define BOOST_PP_INC_68 69
# define BOOST_PP_INC_69 70
# define BOOST_PP_INC_70 71
# define BOOST_PP_INC_71 72
# define BOOST_PP_INC_72 73
# define BOOST_PP_INC_73 74
# define BOOST_PP_INC_74 75
# define BOOST_PP_INC_75 76
# define BOOST_PP_INC_76 77
# define BOOST_PP_INC_77 78
# define BOOST_PP_INC_78 79
# define BOOST_PP_INC_79 80
# define BOOST_PP_INC_80 81
# define BOOST_PP_INC_81 82
# define BOOST_PP_INC_82 83
# define BOOST_PP_INC_83 84
# define BOOST_PP_INC_84 85
# define BOOST_PP_INC_85 86
# define BOOST_PP_INC_86 87
# define BOOST_PP_INC_87 88
# define BOOST_PP_INC_88 89
# define BOOST_PP_INC_89 90
# define BOOST_PP_INC_90 91
# define BOOST_PP_INC_91 92
# define BOOST_PP_INC_92 93
# define BOOST_PP_INC_93 94
# define BOOST_PP_INC_94 95
# define BOOST_PP_INC_95 96
# define BOOST_PP_INC_96 97
# define BOOST_PP_INC_97 98
# define BOOST_PP_INC_98 99
# define BOOST_PP_INC_99 100
# define BOOST_PP_INC_100 101
# define BOOST_PP_INC_101 102
# define BOOST_PP_INC_102 103
# define BOOST_PP_INC_103 104
# define BOOST_PP_INC_104 105
# define BOOST_PP_INC_105 106
# define BOOST_PP_INC_106 107
# define BOOST_PP_INC_107 108
# define BOOST_PP_INC_108 109
# define BOOST_PP_INC_109 110
# define BOOST_PP_INC_110 111
# define BOOST_PP_INC_111 112
# define BOOST_PP_INC_112 113
# define BOOST_PP_INC_113 114
# define BOOST_PP_INC_114 115
# define BOOST_PP_INC_115 116
# define BOOST_PP_INC_116 117
# define BOOST_PP_INC_117 118
# define BOOST_PP_INC_118 119
# define BOOST_PP_INC_119 120
# define BOOST_PP_INC_120 121
# define BOOST_PP_INC_121 122
# define BOOST_PP_INC_122 123
# define BOOST_PP_INC_123 124
# define BOOST_PP_INC_124 125
# define BOOST_PP_INC_125 126
# define BOOST_PP_INC_126 127
# define BOOST_PP_INC_127 128
# define BOOST_PP_INC_128 129
# define BOOST_PP_INC_129 130
# define BOOST_PP_INC_130 131
# define BOOST_PP_INC_131 132
# define BOOST_PP_INC_132 133
# define BOOST_PP_INC_133 134
# define BOOST_PP_INC_134 135
# define BOOST_PP_INC_135 136
# define BOOST_PP_INC_136 137
# define BOOST_PP_INC_137 138
# define BOOST_PP_INC_138 139
# define BOOST_PP_INC_139 140
# define BOOST_PP_INC_140 141
# define BOOST_PP_INC_141 142
# define BOOST_PP_INC_142 143
# define BOOST_PP_INC_143 144
# define BOOST_PP_INC_144 145
# define BOOST_PP_INC_145 146
# define BOOST_PP_INC_146 147
# define BOOST_PP_INC_147 148
# define BOOST_PP_INC_148 149
# define BOOST_PP_INC_149 150
# define BOOST_PP_INC_150 151
# define BOOST_PP_INC_151 152
# define BOOST_PP_INC_152 153
# define BOOST_PP_INC_153 154
# define BOOST_PP_INC_154 155
# define BOOST_PP_INC_155 156
# define BOOST_PP_INC_156 157
# define BOOST_PP_INC_157 158
# define BOOST_PP_INC_158 159
# define BOOST_PP_INC_159 160
# define BOOST_PP_INC_160 161
# define BOOST_PP_INC_161 162
# define BOOST_PP_INC_162 163
# define BOOST_PP_INC_163 164
# define BOOST_PP_INC_164 165
# define BOOST_PP_INC_165 166
# define BOOST_PP_INC_166 167
# define BOOST_PP_INC_167 168
# define BOOST_PP_INC_168 169
# define BOOST_PP_INC_169 170
# define BOOST_PP_INC_170 171
# define BOOST_PP_INC_171 172
# define BOOST_PP_INC_172 173
# define BOOST_PP_INC_173 174
# define BOOST_PP_INC_174 175
# define BOOST_PP_INC_175 176
# define BOOST_PP_INC_176 177
# define BOOST_PP_INC_177 178
# define BOOST_PP_INC_178 179
# define BOOST_PP_INC_179 180
# define BOOST_PP_INC_180 181
# define BOOST_PP_INC_181 182
# define BOOST_PP_INC_182 183
# define BOOST_PP_INC_183 184
# define BOOST_PP_INC_184 185
# define BOOST_PP_INC_185 186
# define BOOST_PP_INC_186 187
# define BOOST_PP_INC_187 188
# define BOOST_PP_INC_188 189
# define BOOST_PP_INC_189 190
# define BOOST_PP_INC_190 191
# define BOOST_PP_INC_191 192
# define BOOST_PP_INC_192 193
# define BOOST_PP_INC_193 194
# define BOOST_PP_INC_194 195
# define BOOST_PP_INC_195 196
# define BOOST_PP_INC_196 197
# define BOOST_PP_INC_197 198
# define BOOST_PP_INC_198 199
# define BOOST_PP_INC_199 200
# define BOOST_PP_INC_200 201
# define BOOST_PP_INC_201 202
# define BOOST_PP_INC_202 203
# define BOOST_PP_INC_203 204
# define BOOST_PP_INC_204 205
# define BOOST_PP_INC_205 206
# define BOOST_PP_INC_206 207
# define BOOST_PP_INC_207 208
# define BOOST_PP_INC_208 209
# define BOOST_PP_INC_209 210
# define BOOST_PP_INC_210 211
# define BOOST_PP_INC_211 212
# define BOOST_PP_INC_212 213
# define BOOST_PP_INC_213 214
# define BOOST_PP_INC_214 215
# define BOOST_PP_INC_215 216
# define BOOST_PP_INC_216 217
# define BOOST_PP_INC_217 218
# define BOOST_PP_INC_218 219
# define BOOST_PP_INC_219 220
# define BOOST_PP_INC_220 221
# define BOOST_PP_INC_221 222
# define BOOST_PP_INC_222 223
# define BOOST_PP_INC_223 224
# define BOOST_PP_INC_224 225
# define BOOST_PP_INC_225 226
# define BOOST_PP_INC_226 227
# define BOOST_PP_INC_227 228
# define BOOST_PP_INC_228 229
# define BOOST_PP_INC_229 230
# define BOOST_PP_INC_230 231
# define BOOST_PP_INC_231 232
# define BOOST_PP_INC_232 233
# define BOOST_PP_INC_233 234
# define BOOST_PP_INC_234 235
# define BOOST_PP_INC_235 236
# define BOOST_PP_INC_236 237
# define BOOST_PP_INC_237 238
# define BOOST_PP_INC_238 239
# define BOOST_PP_INC_239 240
# define BOOST_PP_INC_240 241
# define BOOST_PP_INC_241 242
# define BOOST_PP_INC_242 243
# define BOOST_PP_INC_243 244
# define BOOST_PP_INC_244 245
# define BOOST_PP_INC_245 246
# define BOOST_PP_INC_246 247
# define BOOST_PP_INC_247 248
# define BOOST_PP_INC_248 249
# define BOOST_PP_INC_249 250
# define BOOST_PP_INC_250 251
# define BOOST_PP_INC_251 252
# define BOOST_PP_INC_252 253
# define BOOST_PP_INC_253 254
# define BOOST_PP_INC_254 255
# define BOOST_PP_INC_255 256
# define BOOST_PP_INC_256 256
#
# endif

View File

@ -0,0 +1,280 @@
# /* Copyright (C) 2001
# * Housemarque Oy
# * http://www.housemarque.com
# *
# * 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)
# */
#
# /* Revised by Paul Mensonides (2002) */
# /* Revised by Edward Diener (2020) */
#
# /* See http://www.boost.org for most recent version. */
#
# ifndef BOOST_PREPROCESSOR_ARITHMETIC_INC_512_HPP
# define BOOST_PREPROCESSOR_ARITHMETIC_INC_512_HPP
#
# if defined(BOOST_PP_INC_256)
# undef BOOST_PP_INC_256
# endif
#
# define BOOST_PP_INC_256 257
# define BOOST_PP_INC_257 258
# define BOOST_PP_INC_258 259
# define BOOST_PP_INC_259 260
# define BOOST_PP_INC_260 261
# define BOOST_PP_INC_261 262
# define BOOST_PP_INC_262 263
# define BOOST_PP_INC_263 264
# define BOOST_PP_INC_264 265
# define BOOST_PP_INC_265 266
# define BOOST_PP_INC_266 267
# define BOOST_PP_INC_267 268
# define BOOST_PP_INC_268 269
# define BOOST_PP_INC_269 270
# define BOOST_PP_INC_270 271
# define BOOST_PP_INC_271 272
# define BOOST_PP_INC_272 273
# define BOOST_PP_INC_273 274
# define BOOST_PP_INC_274 275
# define BOOST_PP_INC_275 276
# define BOOST_PP_INC_276 277
# define BOOST_PP_INC_277 278
# define BOOST_PP_INC_278 279
# define BOOST_PP_INC_279 280
# define BOOST_PP_INC_280 281
# define BOOST_PP_INC_281 282
# define BOOST_PP_INC_282 283
# define BOOST_PP_INC_283 284
# define BOOST_PP_INC_284 285
# define BOOST_PP_INC_285 286
# define BOOST_PP_INC_286 287
# define BOOST_PP_INC_287 288
# define BOOST_PP_INC_288 289
# define BOOST_PP_INC_289 290
# define BOOST_PP_INC_290 291
# define BOOST_PP_INC_291 292
# define BOOST_PP_INC_292 293
# define BOOST_PP_INC_293 294
# define BOOST_PP_INC_294 295
# define BOOST_PP_INC_295 296
# define BOOST_PP_INC_296 297
# define BOOST_PP_INC_297 298
# define BOOST_PP_INC_298 299
# define BOOST_PP_INC_299 300
# define BOOST_PP_INC_300 301
# define BOOST_PP_INC_301 302
# define BOOST_PP_INC_302 303
# define BOOST_PP_INC_303 304
# define BOOST_PP_INC_304 305
# define BOOST_PP_INC_305 306
# define BOOST_PP_INC_306 307
# define BOOST_PP_INC_307 308
# define BOOST_PP_INC_308 309
# define BOOST_PP_INC_309 310
# define BOOST_PP_INC_310 311
# define BOOST_PP_INC_311 312
# define BOOST_PP_INC_312 313
# define BOOST_PP_INC_313 314
# define BOOST_PP_INC_314 315
# define BOOST_PP_INC_315 316
# define BOOST_PP_INC_316 317
# define BOOST_PP_INC_317 318
# define BOOST_PP_INC_318 319
# define BOOST_PP_INC_319 320
# define BOOST_PP_INC_320 321
# define BOOST_PP_INC_321 322
# define BOOST_PP_INC_322 323
# define BOOST_PP_INC_323 324
# define BOOST_PP_INC_324 325
# define BOOST_PP_INC_325 326
# define BOOST_PP_INC_326 327
# define BOOST_PP_INC_327 328
# define BOOST_PP_INC_328 329
# define BOOST_PP_INC_329 330
# define BOOST_PP_INC_330 331
# define BOOST_PP_INC_331 332
# define BOOST_PP_INC_332 333
# define BOOST_PP_INC_333 334
# define BOOST_PP_INC_334 335
# define BOOST_PP_INC_335 336
# define BOOST_PP_INC_336 337
# define BOOST_PP_INC_337 338
# define BOOST_PP_INC_338 339
# define BOOST_PP_INC_339 340
# define BOOST_PP_INC_340 341
# define BOOST_PP_INC_341 342
# define BOOST_PP_INC_342 343
# define BOOST_PP_INC_343 344
# define BOOST_PP_INC_344 345
# define BOOST_PP_INC_345 346
# define BOOST_PP_INC_346 347
# define BOOST_PP_INC_347 348
# define BOOST_PP_INC_348 349
# define BOOST_PP_INC_349 350
# define BOOST_PP_INC_350 351
# define BOOST_PP_INC_351 352
# define BOOST_PP_INC_352 353
# define BOOST_PP_INC_353 354
# define BOOST_PP_INC_354 355
# define BOOST_PP_INC_355 356
# define BOOST_PP_INC_356 357
# define BOOST_PP_INC_357 358
# define BOOST_PP_INC_358 359
# define BOOST_PP_INC_359 360
# define BOOST_PP_INC_360 361
# define BOOST_PP_INC_361 362
# define BOOST_PP_INC_362 363
# define BOOST_PP_INC_363 364
# define BOOST_PP_INC_364 365
# define BOOST_PP_INC_365 366
# define BOOST_PP_INC_366 367
# define BOOST_PP_INC_367 368
# define BOOST_PP_INC_368 369
# define BOOST_PP_INC_369 370
# define BOOST_PP_INC_370 371
# define BOOST_PP_INC_371 372
# define BOOST_PP_INC_372 373
# define BOOST_PP_INC_373 374
# define BOOST_PP_INC_374 375
# define BOOST_PP_INC_375 376
# define BOOST_PP_INC_376 377
# define BOOST_PP_INC_377 378
# define BOOST_PP_INC_378 379
# define BOOST_PP_INC_379 380
# define BOOST_PP_INC_380 381
# define BOOST_PP_INC_381 382
# define BOOST_PP_INC_382 383
# define BOOST_PP_INC_383 384
# define BOOST_PP_INC_384 385
# define BOOST_PP_INC_385 386
# define BOOST_PP_INC_386 387
# define BOOST_PP_INC_387 388
# define BOOST_PP_INC_388 389
# define BOOST_PP_INC_389 390
# define BOOST_PP_INC_390 391
# define BOOST_PP_INC_391 392
# define BOOST_PP_INC_392 393
# define BOOST_PP_INC_393 394
# define BOOST_PP_INC_394 395
# define BOOST_PP_INC_395 396
# define BOOST_PP_INC_396 397
# define BOOST_PP_INC_397 398
# define BOOST_PP_INC_398 399
# define BOOST_PP_INC_399 400
# define BOOST_PP_INC_400 401
# define BOOST_PP_INC_401 402
# define BOOST_PP_INC_402 403
# define BOOST_PP_INC_403 404
# define BOOST_PP_INC_404 405
# define BOOST_PP_INC_405 406
# define BOOST_PP_INC_406 407
# define BOOST_PP_INC_407 408
# define BOOST_PP_INC_408 409
# define BOOST_PP_INC_409 410
# define BOOST_PP_INC_410 411
# define BOOST_PP_INC_411 412
# define BOOST_PP_INC_412 413
# define BOOST_PP_INC_413 414
# define BOOST_PP_INC_414 415
# define BOOST_PP_INC_415 416
# define BOOST_PP_INC_416 417
# define BOOST_PP_INC_417 418
# define BOOST_PP_INC_418 419
# define BOOST_PP_INC_419 420
# define BOOST_PP_INC_420 421
# define BOOST_PP_INC_421 422
# define BOOST_PP_INC_422 423
# define BOOST_PP_INC_423 424
# define BOOST_PP_INC_424 425
# define BOOST_PP_INC_425 426
# define BOOST_PP_INC_426 427
# define BOOST_PP_INC_427 428
# define BOOST_PP_INC_428 429
# define BOOST_PP_INC_429 430
# define BOOST_PP_INC_430 431
# define BOOST_PP_INC_431 432
# define BOOST_PP_INC_432 433
# define BOOST_PP_INC_433 434
# define BOOST_PP_INC_434 435
# define BOOST_PP_INC_435 436
# define BOOST_PP_INC_436 437
# define BOOST_PP_INC_437 438
# define BOOST_PP_INC_438 439
# define BOOST_PP_INC_439 440
# define BOOST_PP_INC_440 441
# define BOOST_PP_INC_441 442
# define BOOST_PP_INC_442 443
# define BOOST_PP_INC_443 444
# define BOOST_PP_INC_444 445
# define BOOST_PP_INC_445 446
# define BOOST_PP_INC_446 447
# define BOOST_PP_INC_447 448
# define BOOST_PP_INC_448 449
# define BOOST_PP_INC_449 450
# define BOOST_PP_INC_450 451
# define BOOST_PP_INC_451 452
# define BOOST_PP_INC_452 453
# define BOOST_PP_INC_453 454
# define BOOST_PP_INC_454 455
# define BOOST_PP_INC_455 456
# define BOOST_PP_INC_456 457
# define BOOST_PP_INC_457 458
# define BOOST_PP_INC_458 459
# define BOOST_PP_INC_459 460
# define BOOST_PP_INC_460 461
# define BOOST_PP_INC_461 462
# define BOOST_PP_INC_462 463
# define BOOST_PP_INC_463 464
# define BOOST_PP_INC_464 465
# define BOOST_PP_INC_465 466
# define BOOST_PP_INC_466 467
# define BOOST_PP_INC_467 468
# define BOOST_PP_INC_468 469
# define BOOST_PP_INC_469 470
# define BOOST_PP_INC_470 471
# define BOOST_PP_INC_471 472
# define BOOST_PP_INC_472 473
# define BOOST_PP_INC_473 474
# define BOOST_PP_INC_474 475
# define BOOST_PP_INC_475 476
# define BOOST_PP_INC_476 477
# define BOOST_PP_INC_477 478
# define BOOST_PP_INC_478 479
# define BOOST_PP_INC_479 480
# define BOOST_PP_INC_480 481
# define BOOST_PP_INC_481 482
# define BOOST_PP_INC_482 483
# define BOOST_PP_INC_483 484
# define BOOST_PP_INC_484 485
# define BOOST_PP_INC_485 486
# define BOOST_PP_INC_486 487
# define BOOST_PP_INC_487 488
# define BOOST_PP_INC_488 489
# define BOOST_PP_INC_489 490
# define BOOST_PP_INC_490 491
# define BOOST_PP_INC_491 492
# define BOOST_PP_INC_492 493
# define BOOST_PP_INC_493 494
# define BOOST_PP_INC_494 495
# define BOOST_PP_INC_495 496
# define BOOST_PP_INC_496 497
# define BOOST_PP_INC_497 498
# define BOOST_PP_INC_498 499
# define BOOST_PP_INC_499 500
# define BOOST_PP_INC_500 501
# define BOOST_PP_INC_501 502
# define BOOST_PP_INC_502 503
# define BOOST_PP_INC_503 504
# define BOOST_PP_INC_504 505
# define BOOST_PP_INC_505 506
# define BOOST_PP_INC_506 507
# define BOOST_PP_INC_507 508
# define BOOST_PP_INC_508 509
# define BOOST_PP_INC_509 510
# define BOOST_PP_INC_510 511
# define BOOST_PP_INC_511 512
# define BOOST_PP_INC_512 512
#
# endif

View File

@ -8,14 +8,18 @@
# */
#
# /* Revised by Paul Mensonides (2002) */
# /* Revised by Edward Diener (2020) */
#
# /* See http://www.boost.org for most recent version. */
#
# ifndef BOOST_PREPROCESSOR_ARITHMETIC_MOD_HPP
# define BOOST_PREPROCESSOR_ARITHMETIC_MOD_HPP
#
# include <boost/preprocessor/arithmetic/detail/div_base.hpp>
# include <boost/preprocessor/config/config.hpp>
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
#
# include <boost/preprocessor/arithmetic/detail/div_base.hpp>
# include <boost/preprocessor/tuple/elem.hpp>
#
# /* BOOST_PP_MOD */
@ -36,4 +40,36 @@
# define BOOST_PP_MOD_D_I(d, x, y) BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_DIV_BASE_D(d, x, y))
# endif
#
# else
#
# include <boost/preprocessor/arithmetic/detail/div_base.hpp>
# include <boost/preprocessor/control/iif.hpp>
# include <boost/preprocessor/facilities/identity.hpp>
# include <boost/preprocessor/tuple/elem.hpp>
# include <boost/preprocessor/arithmetic/detail/is_1_number.hpp>
#
# /* BOOST_PP_MOD */
#
# define BOOST_PP_MOD(x, y) BOOST_PP_IIF(BOOST_PP_DETAIL_IS_1_NUMBER(y),BOOST_PP_IDENTITY_N(0,2),BOOST_PP_MOD_DO)(x,y)
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
# define BOOST_PP_MOD_DO(x, y) BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_DIV_BASE(x, y))
# else
# define BOOST_PP_MOD_DO(x, y) BOOST_PP_MOD_I(x, y)
# define BOOST_PP_MOD_I(x, y) BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_DIV_BASE(x, y))
# endif
#
# /* BOOST_PP_MOD_D */
#
# define BOOST_PP_MOD_D(d, x, y) BOOST_PP_IIF(BOOST_PP_DETAIL_IS_1_NUMBER(y),BOOST_PP_IDENTITY_N(0,3),BOOST_PP_MOD_DO_D)(d,x,y)
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
# define BOOST_PP_MOD_DO_D(d, x, y) BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_DIV_BASE_D(d, x, y))
# else
# define BOOST_PP_MOD_DO_D(d, x, y) BOOST_PP_MOD_D_I(d, x, y)
# define BOOST_PP_MOD_D_I(d, x, y) BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_DIV_BASE_D(d, x, y))
# endif
#
# endif
#
# endif

View File

@ -8,15 +8,19 @@
# */
#
# /* Revised by Paul Mensonides (2002) */
# /* Revised by Edward Diener (2020) */
#
# /* See http://www.boost.org for most recent version. */
#
# ifndef BOOST_PREPROCESSOR_ARITHMETIC_MUL_HPP
# define BOOST_PREPROCESSOR_ARITHMETIC_MUL_HPP
#
# include <boost/preprocessor/config/config.hpp>
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
#
# include <boost/preprocessor/arithmetic/add.hpp>
# include <boost/preprocessor/arithmetic/dec.hpp>
# include <boost/preprocessor/config/config.hpp>
# include <boost/preprocessor/control/while.hpp>
# include <boost/preprocessor/tuple/elem.hpp>
# include <boost/preprocessor/tuple/rem.hpp>
@ -50,4 +54,59 @@
# define BOOST_PP_MUL_D_I(d, x, y) BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_MUL_P, BOOST_PP_MUL_O, (0, x, y)))
# endif
#
# else
#
# include <boost/preprocessor/arithmetic/add.hpp>
# include <boost/preprocessor/arithmetic/dec.hpp>
# include <boost/preprocessor/control/iif.hpp>
# include <boost/preprocessor/control/while.hpp>
# include <boost/preprocessor/facilities/identity.hpp>
# include <boost/preprocessor/logical/bitand.hpp>
# include <boost/preprocessor/logical/bool.hpp>
# include <boost/preprocessor/logical/compl.hpp>
# include <boost/preprocessor/tuple/elem.hpp>
# include <boost/preprocessor/tuple/rem.hpp>
# include <boost/preprocessor/arithmetic/detail/is_minimum_number.hpp>
# include <boost/preprocessor/arithmetic/detail/is_maximum_number.hpp>
# include <boost/preprocessor/arithmetic/detail/is_1_number.hpp>
#
# /* BOOST_PP_MUL */
#
# define BOOST_PP_MUL(x, y) BOOST_PP_IIF(BOOST_PP_DETAIL_IS_MINIMUM_NUMBER(x),BOOST_PP_IDENTITY_N(x,2),BOOST_PP_MUL_CHECK_1X)(x,y)
#
# define BOOST_PP_MUL_CHECK_1X(x, y) BOOST_PP_IIF(BOOST_PP_DETAIL_IS_1_NUMBER(x),BOOST_PP_IDENTITY_N(y,2),BOOST_PP_MUL_DO)(x,y)
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
# define BOOST_PP_MUL_DO(x, y) BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_WHILE(BOOST_PP_MUL_P, BOOST_PP_MUL_O, (0, x, y)))
# else
# define BOOST_PP_MUL_DO(x, y) BOOST_PP_MUL_I(x, y)
# define BOOST_PP_MUL_I(x, y) BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_WHILE(BOOST_PP_MUL_P, BOOST_PP_MUL_O, (0, x, y)))
# endif
#
# define BOOST_PP_MUL_P(d, rxy) BOOST_PP_BITAND(BOOST_PP_BOOL(BOOST_PP_TUPLE_ELEM(3, 2, rxy)),BOOST_PP_COMPL(BOOST_PP_DETAIL_IS_MAXIMUM_NUMBER(BOOST_PP_TUPLE_ELEM(3, 0, rxy))))
#
# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
# define BOOST_PP_MUL_O(d, rxy) BOOST_PP_MUL_O_IM(d, BOOST_PP_TUPLE_REM_3 rxy)
# define BOOST_PP_MUL_O_IM(d, im) BOOST_PP_MUL_O_I(d, im)
# else
# define BOOST_PP_MUL_O(d, rxy) BOOST_PP_MUL_O_I(d, BOOST_PP_TUPLE_ELEM(3, 0, rxy), BOOST_PP_TUPLE_ELEM(3, 1, rxy), BOOST_PP_TUPLE_ELEM(3, 2, rxy))
# endif
#
# define BOOST_PP_MUL_O_I(d, r, x, y) (BOOST_PP_ADD_D(d, r, x), x, BOOST_PP_DEC(y))
#
# /* BOOST_PP_MUL_D */
#
# define BOOST_PP_MUL_D(d, x, y) BOOST_PP_IIF(BOOST_PP_DETAIL_IS_MINIMUM_NUMBER(x),BOOST_PP_IDENTITY_N(x,3),BOOST_PP_MUL_CHECK_1X_D)(d,x,y)
#
# define BOOST_PP_MUL_CHECK_1X_D(d, x, y) BOOST_PP_IIF(BOOST_PP_DETAIL_IS_1_NUMBER(x),BOOST_PP_IDENTITY_N(y,3),BOOST_PP_MUL_DO_D)(d,x,y)
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
# define BOOST_PP_MUL_DO_D(d, x, y) BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_MUL_P, BOOST_PP_MUL_O, (0, x, y)))
# else
# define BOOST_PP_MUL_DO_D(d, x, y) BOOST_PP_MUL_D_I(d, x, y)
# define BOOST_PP_MUL_D_I(d, x, y) BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_MUL_P, BOOST_PP_MUL_O, (0, x, y)))
# endif
#
# endif
#
# endif

View File

@ -8,14 +8,18 @@
# */
#
# /* Revised by Paul Mensonides (2002) */
# /* Revised by Edward Diener (2020) */
#
# /* See http://www.boost.org for most recent version. */
#
# ifndef BOOST_PREPROCESSOR_ARITHMETIC_SUB_HPP
# define BOOST_PREPROCESSOR_ARITHMETIC_SUB_HPP
#
# include <boost/preprocessor/arithmetic/dec.hpp>
# include <boost/preprocessor/config/config.hpp>
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
#
# include <boost/preprocessor/arithmetic/dec.hpp>
# include <boost/preprocessor/control/while.hpp>
# include <boost/preprocessor/tuple/elem.hpp>
#
@ -47,4 +51,50 @@
# define BOOST_PP_SUB_D_I(d, x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_SUB_P, BOOST_PP_SUB_O, (x, y)))
# endif
#
# else
#
# include <boost/preprocessor/arithmetic/dec.hpp>
# include <boost/preprocessor/control/iif.hpp>
# include <boost/preprocessor/control/while.hpp>
# include <boost/preprocessor/facilities/identity.hpp>
# include <boost/preprocessor/logical/and.hpp>
# include <boost/preprocessor/logical/bitor.hpp>
# include <boost/preprocessor/tuple/elem.hpp>
# include <boost/preprocessor/arithmetic/detail/is_maximum_number.hpp>
# include <boost/preprocessor/arithmetic/detail/is_minimum_number.hpp>
#
# /* BOOST_PP_SUB */
#
# define BOOST_PP_SUB(x, y) BOOST_PP_IIF(BOOST_PP_BITOR(BOOST_PP_DETAIL_IS_MAXIMUM_NUMBER(y),BOOST_PP_DETAIL_IS_MINIMUM_NUMBER(x)),BOOST_PP_IDENTITY_N(0,2),BOOST_PP_SUB_DO)(x,y)
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
# define BOOST_PP_SUB_DO(x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE(BOOST_PP_SUB_P, BOOST_PP_SUB_O, (x, y)))
# else
# define BOOST_PP_SUB_DO(x, y) BOOST_PP_SUB_I(x, y)
# define BOOST_PP_SUB_I(x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE(BOOST_PP_SUB_P, BOOST_PP_SUB_O, (x, y)))
# endif
#
# define BOOST_PP_SUB_P(d, xy) BOOST_PP_AND(BOOST_PP_TUPLE_ELEM(2, 1, xy),BOOST_PP_TUPLE_ELEM(2, 0, xy))
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
# define BOOST_PP_SUB_O(d, xy) BOOST_PP_SUB_O_I xy
# else
# define BOOST_PP_SUB_O(d, xy) BOOST_PP_SUB_O_I(BOOST_PP_TUPLE_ELEM(2, 0, xy), BOOST_PP_TUPLE_ELEM(2, 1, xy))
# endif
#
# define BOOST_PP_SUB_O_I(x, y) (BOOST_PP_DEC(x), BOOST_PP_DEC(y))
#
# /* BOOST_PP_SUB_D */
#
# define BOOST_PP_SUB_D(d, x, y) BOOST_PP_IIF(BOOST_PP_BITOR(BOOST_PP_DETAIL_IS_MAXIMUM_NUMBER(y),BOOST_PP_DETAIL_IS_MINIMUM_NUMBER(x)),BOOST_PP_IDENTITY_N(0,3),BOOST_PP_SUB_DO_D)(d,x,y)
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
# define BOOST_PP_SUB_DO_D(d, x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_SUB_P, BOOST_PP_SUB_O, (x, y)))
# else
# define BOOST_PP_SUB_DO_D(d, x, y) BOOST_PP_SUB_D_I(d, x, y)
# define BOOST_PP_SUB_D_I(d, x, y) BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_WHILE_ ## d(BOOST_PP_SUB_P, BOOST_PP_SUB_O, (x, y)))
# endif
#
# endif
#
# endif

View File

@ -22,34 +22,34 @@
#
# define BOOST_PP_ARRAY_DETAIL_GET_DATA_NONE(size, data)
# if BOOST_PP_VARIADICS && !(BOOST_PP_VARIADICS_MSVC && _MSC_VER <= 1400)
# if BOOST_PP_VARIADICS_MSVC
# define BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY_VC_DEFAULT(size, data) BOOST_PP_TUPLE_REM(size) data
# define BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY_VC_CAT(size, data) BOOST_PP_TUPLE_REM_CAT(size) data
# define BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY(size, data) \
BOOST_PP_IIF \
( \
BOOST_PP_IS_1(size), \
BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY_VC_CAT, \
BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY_VC_DEFAULT \
) \
(size,data) \
# if !(BOOST_PP_VARIADICS_MSVC && _MSC_VER <= 1400)
# if BOOST_PP_VARIADICS_MSVC
# define BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY_VC_DEFAULT(size, data) BOOST_PP_TUPLE_REM(size) data
# define BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY_VC_CAT(size, data) BOOST_PP_TUPLE_REM_CAT(size) data
# define BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY(size, data) \
BOOST_PP_IIF \
( \
BOOST_PP_IS_1(size), \
BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY_VC_CAT, \
BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY_VC_DEFAULT \
) \
(size,data) \
/**/
# else
# define BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY(size, data) BOOST_PP_TUPLE_REM(size) data
# define BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY(size, data) BOOST_PP_TUPLE_REM(size) data
# endif
# else
# define BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY(size, data) BOOST_PP_TUPLE_REM(size) data
# define BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY(size, data) BOOST_PP_TUPLE_REM(size) data
# endif
# define BOOST_PP_ARRAY_DETAIL_GET_DATA(size, data) \
BOOST_PP_IF \
( \
size, \
BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY, \
BOOST_PP_ARRAY_DETAIL_GET_DATA_NONE \
) \
(size,data) \
BOOST_PP_IF \
( \
size, \
BOOST_PP_ARRAY_DETAIL_GET_DATA_ANY, \
BOOST_PP_ARRAY_DETAIL_GET_DATA_NONE \
) \
(size,data) \
/**/
#
# endif /* BOOST_PREPROCESSOR_ARRAY_DETAIL_GET_DATA_HPP */

View File

@ -15,11 +15,27 @@
#
# include <boost/preprocessor/cat.hpp>
# include <boost/preprocessor/config/config.hpp>
# include <boost/preprocessor/control/if.hpp>
# include <boost/preprocessor/array/size.hpp>
# include <boost/preprocessor/tuple/rem.hpp>
# include <boost/preprocessor/variadic/has_opt.hpp>
#
# /* BOOST_PP_ARRAY_ENUM */
#
# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
# if BOOST_PP_VARIADIC_HAS_OPT()
# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
# define BOOST_PP_ARRAY_ENUM_NOT_EMPTY(array) BOOST_PP_ARRAY_ENUM_I(BOOST_PP_TUPLE_REM_CTOR, array)
# define BOOST_PP_ARRAY_ENUM_I(m, args) BOOST_PP_ARRAY_ENUM_II(m, args)
# define BOOST_PP_ARRAY_ENUM_II(m, args) BOOST_PP_CAT(m ## args,)
# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
# define BOOST_PP_ARRAY_ENUM_NOT_EMPTY(array) BOOST_PP_ARRAY_ENUM_I(array)
# define BOOST_PP_ARRAY_ENUM_I(array) BOOST_PP_TUPLE_REM_CTOR ## array
# else
# define BOOST_PP_ARRAY_ENUM_NOT_EMPTY(array) BOOST_PP_TUPLE_REM_CTOR array
# endif
# define BOOST_PP_ARRAY_ENUM_EMPTY(array)
# define BOOST_PP_ARRAY_ENUM(array) BOOST_PP_IF(BOOST_PP_ARRAY_SIZE(array),BOOST_PP_ARRAY_ENUM_NOT_EMPTY,BOOST_PP_ARRAY_ENUM_EMPTY)(array)
# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
# define BOOST_PP_ARRAY_ENUM(array) BOOST_PP_ARRAY_ENUM_I(BOOST_PP_TUPLE_REM_CTOR, array)
# define BOOST_PP_ARRAY_ENUM_I(m, args) BOOST_PP_ARRAY_ENUM_II(m, args)
# define BOOST_PP_ARRAY_ENUM_II(m, args) BOOST_PP_CAT(m ## args,)

View File

@ -7,11 +7,17 @@
# * *
# ************************************************************************** */
#
# /* Revised by Edward Diener (2020) */
#
# /* See http://www.boost.org for most recent version. */
#
# ifndef BOOST_PREPROCESSOR_ARRAY_INSERT_HPP
# define BOOST_PREPROCESSOR_ARRAY_INSERT_HPP
#
# include <boost/preprocessor/config/config.hpp>
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
#
# include <boost/preprocessor/arithmetic/inc.hpp>
# include <boost/preprocessor/array/elem.hpp>
# include <boost/preprocessor/array/push_back.hpp>
@ -52,4 +58,69 @@
#
# define BOOST_PP_ARRAY_INSERT_O_I(n, i, elem, res, arr) (BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(BOOST_PP_ARRAY_SIZE(res), i), BOOST_PP_INC(n), n), i, elem, BOOST_PP_ARRAY_PUSH_BACK(res, BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(BOOST_PP_ARRAY_SIZE(res), i), BOOST_PP_ARRAY_ELEM(n, arr), elem)), arr)
#
# else
#
# include <boost/preprocessor/arithmetic/inc.hpp>
# include <boost/preprocessor/array/elem.hpp>
# include <boost/preprocessor/array/push_back.hpp>
# include <boost/preprocessor/array/size.hpp>
# include <boost/preprocessor/comparison/not_equal.hpp>
# include <boost/preprocessor/config/limits.hpp>
# include <boost/preprocessor/control/deduce_d.hpp>
# include <boost/preprocessor/control/iif.hpp>
# include <boost/preprocessor/control/while.hpp>
# if BOOST_PP_LIMIT_TUPLE == 256
# include <boost/preprocessor/facilities/identity.hpp>
# include <boost/preprocessor/logical/not.hpp>
# endif
# include <boost/preprocessor/tuple/elem.hpp>
#
# /* BOOST_PP_ARRAY_INSERT */
#
# define BOOST_PP_ARRAY_INSERT(array, i, elem) BOOST_PP_ARRAY_INSERT_I(BOOST_PP_DEDUCE_D(), array, i, elem)
# define BOOST_PP_ARRAY_INSERT_I(d, array, i, elem) BOOST_PP_ARRAY_INSERT_D(d, array, i, elem)
#
# /* BOOST_PP_ARRAY_INSERT_D */
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
# if BOOST_PP_LIMIT_TUPLE == 256
# define BOOST_PP_ARRAY_INSERT_D(d, array, i, elem) \
BOOST_PP_IIF(BOOST_PP_NOT(BOOST_PP_ARRAY_SIZE(array)),BOOST_PP_IDENTITY_N((1,(elem)),5),BOOST_PP_ARRAY_INSERT_ZERO_D)(d, array, i, elem, BOOST_PP_NOT(i))
# else
# define BOOST_PP_ARRAY_INSERT_D(d, array, i, elem) BOOST_PP_TUPLE_ELEM(5, 3, BOOST_PP_WHILE_ ## d(BOOST_PP_ARRAY_INSERT_P, BOOST_PP_ARRAY_INSERT_O, (0, i, elem, (0, ()), array)))
# endif
# else
# define BOOST_PP_ARRAY_INSERT_D(d, array, i, elem) BOOST_PP_ARRAY_INSERT_D_I(d, array, i, elem)
# if BOOST_PP_LIMIT_TUPLE == 256
# define BOOST_PP_ARRAY_INSERT_D_I(d, array, i, elem) \
BOOST_PP_IIF(BOOST_PP_NOT(BOOST_PP_ARRAY_SIZE(array)),BOOST_PP_IDENTITY_N((1,(elem)),5),BOOST_PP_ARRAY_INSERT_ZERO_D)(d, array, i, elem, BOOST_PP_NOT(i))
# else
# define BOOST_PP_ARRAY_INSERT_D_I(d, array, i, elem) BOOST_PP_TUPLE_ELEM(5, 3, BOOST_PP_WHILE_ ## d(BOOST_PP_ARRAY_INSERT_P, BOOST_PP_ARRAY_INSERT_O, (0, i, elem, (0, ()), array)))
# endif
# endif
#
# if BOOST_PP_LIMIT_TUPLE == 256
# define BOOST_PP_ARRAY_INSERT_ZERO_D(d, array, i, elem, zero) \
BOOST_PP_TUPLE_ELEM(5, 3, BOOST_PP_WHILE_ ## d(BOOST_PP_ARRAY_INSERT_P, BOOST_PP_ARRAY_INSERT_O, \
(1, i, elem, BOOST_PP_IIF( zero, ( 2 , ( elem , BOOST_PP_ARRAY_ELEM(0,array) ) ) , ( 1 , ( BOOST_PP_ARRAY_ELEM(0,array) ) ) ), array)))
# endif
#
# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
# define BOOST_PP_ARRAY_INSERT_P(d, state) BOOST_PP_ARRAY_INSERT_P_I state
# else
# define BOOST_PP_ARRAY_INSERT_P(d, state) BOOST_PP_ARRAY_INSERT_P_I(nil, nil, nil, BOOST_PP_TUPLE_ELEM(5, 3, state), BOOST_PP_TUPLE_ELEM(5, 4, state))
# endif
#
# define BOOST_PP_ARRAY_INSERT_P_I(_i, _ii, _iii, res, arr) BOOST_PP_NOT_EQUAL(BOOST_PP_ARRAY_SIZE(res), BOOST_PP_INC(BOOST_PP_ARRAY_SIZE(arr)))
#
# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
# define BOOST_PP_ARRAY_INSERT_O(d, state) BOOST_PP_ARRAY_INSERT_O_I state
# else
# define BOOST_PP_ARRAY_INSERT_O(d, state) BOOST_PP_ARRAY_INSERT_O_I(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_TUPLE_ELEM(5, 4, state))
# endif
#
# define BOOST_PP_ARRAY_INSERT_O_I(n, i, elem, res, arr) (BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(BOOST_PP_ARRAY_SIZE(res), i), BOOST_PP_INC(n), n), i, elem, BOOST_PP_ARRAY_PUSH_BACK(res, BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(BOOST_PP_ARRAY_SIZE(res), i), BOOST_PP_ARRAY_ELEM(n, arr), elem)), arr)
#
# endif
#
# endif

View File

@ -7,11 +7,17 @@
# * *
# ************************************************************************** */
#
# /* Revised by Edward Diener (2020) */
#
# /* See http://www.boost.org for most recent version. */
#
# ifndef BOOST_PREPROCESSOR_ARRAY_REMOVE_HPP
# define BOOST_PREPROCESSOR_ARRAY_REMOVE_HPP
#
# include <boost/preprocessor/config/config.hpp>
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
#
# include <boost/preprocessor/arithmetic/inc.hpp>
# include <boost/preprocessor/array/elem.hpp>
# include <boost/preprocessor/array/push_back.hpp>
@ -51,4 +57,64 @@
# define BOOST_PP_ARRAY_REMOVE_O_I(n, i, res, arr) (BOOST_PP_INC(n), i, BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(n, i), BOOST_PP_ARRAY_PUSH_BACK, BOOST_PP_TUPLE_ELEM_2_0)(res, BOOST_PP_ARRAY_ELEM(n, arr)), arr)
# endif
#
# else
#
# include <boost/preprocessor/arithmetic/inc.hpp>
# include <boost/preprocessor/array/elem.hpp>
# include <boost/preprocessor/array/push_back.hpp>
# include <boost/preprocessor/array/size.hpp>
# include <boost/preprocessor/comparison/not_equal.hpp>
# include <boost/preprocessor/control/deduce_d.hpp>
# include <boost/preprocessor/control/iif.hpp>
# include <boost/preprocessor/control/while.hpp>
# if BOOST_PP_LIMIT_TUPLE == 256
# include <boost/preprocessor/logical/not.hpp>
# endif
# include <boost/preprocessor/tuple/eat.hpp>
# include <boost/preprocessor/tuple/elem.hpp>
#
# /* BOOST_PP_ARRAY_REMOVE */
#
# define BOOST_PP_ARRAY_REMOVE(array, i) BOOST_PP_ARRAY_REMOVE_I(BOOST_PP_DEDUCE_D(), array, i)
# define BOOST_PP_ARRAY_REMOVE_I(d, array, i) BOOST_PP_ARRAY_REMOVE_D(d, array, i)
#
# /* BOOST_PP_ARRAY_REMOVE_D */
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
# if BOOST_PP_LIMIT_TUPLE == 256
# define BOOST_PP_ARRAY_REMOVE_D(d, array, i) BOOST_PP_ARRAY_REMOVE_ZERO_D(d, array, i, BOOST_PP_NOT(i))
# else
# define BOOST_PP_ARRAY_REMOVE_D(d, array, i) BOOST_PP_TUPLE_ELEM(4, 2, BOOST_PP_WHILE_ ## d(BOOST_PP_ARRAY_REMOVE_P, BOOST_PP_ARRAY_REMOVE_O, (0, i, (0, ()), array)))
# endif
# else
# define BOOST_PP_ARRAY_REMOVE_D(d, array, i) BOOST_PP_ARRAY_REMOVE_D_I(d, array, i)
# if BOOST_PP_LIMIT_TUPLE == 256
# define BOOST_PP_ARRAY_REMOVE_D_I(d, array, i) BOOST_PP_ARRAY_REMOVE_ZERO_D(d, array, i, BOOST_PP_NOT(i))
# else
# define BOOST_PP_ARRAY_REMOVE_D_I(d, array, i) BOOST_PP_TUPLE_ELEM(4, 2, BOOST_PP_WHILE_ ## d(BOOST_PP_ARRAY_REMOVE_P, BOOST_PP_ARRAY_REMOVE_O, (0, i, (0, ()), array)))
# endif
# endif
#
# if BOOST_PP_LIMIT_TUPLE == 256
# define BOOST_PP_ARRAY_REMOVE_ZERO_D(d, array, i, zero) \
BOOST_PP_TUPLE_ELEM(4, 2, BOOST_PP_WHILE_ ## d(BOOST_PP_ARRAY_REMOVE_P, BOOST_PP_ARRAY_REMOVE_O, \
(1, i, BOOST_PP_IIF(zero,(0, ()),(1, (BOOST_PP_ARRAY_ELEM(0,array)))), array)))
# endif
#
# define BOOST_PP_ARRAY_REMOVE_P(d, st) BOOST_PP_NOT_EQUAL(BOOST_PP_TUPLE_ELEM(4, 0, st), BOOST_PP_ARRAY_SIZE(BOOST_PP_TUPLE_ELEM(4, 3, st)))
#
# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
# define BOOST_PP_ARRAY_REMOVE_O(d, st) BOOST_PP_ARRAY_REMOVE_O_I st
# else
# define BOOST_PP_ARRAY_REMOVE_O(d, st) BOOST_PP_ARRAY_REMOVE_O_I(BOOST_PP_TUPLE_ELEM(4, 0, st), BOOST_PP_TUPLE_ELEM(4, 1, st), BOOST_PP_TUPLE_ELEM(4, 2, st), BOOST_PP_TUPLE_ELEM(4, 3, st))
# endif
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
# define BOOST_PP_ARRAY_REMOVE_O_I(n, i, res, arr) (BOOST_PP_INC(n), i, BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(n, i), BOOST_PP_ARRAY_PUSH_BACK, res BOOST_PP_TUPLE_EAT_2)(res, BOOST_PP_ARRAY_ELEM(n, arr)), arr)
# else
# define BOOST_PP_ARRAY_REMOVE_O_I(n, i, res, arr) (BOOST_PP_INC(n), i, BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(n, i), BOOST_PP_ARRAY_PUSH_BACK, BOOST_PP_TUPLE_ELEM_2_0)(res, BOOST_PP_ARRAY_ELEM(n, arr)), arr)
# endif
#
# endif
#
# endif

View File

@ -12,6 +12,10 @@
# ifndef BOOST_PREPROCESSOR_ARRAY_REPLACE_HPP
# define BOOST_PREPROCESSOR_ARRAY_REPLACE_HPP
#
# include <boost/preprocessor/config/config.hpp>
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
#
# include <boost/preprocessor/arithmetic/inc.hpp>
# include <boost/preprocessor/array/elem.hpp>
# include <boost/preprocessor/array/push_back.hpp>
@ -46,4 +50,58 @@
#
# define BOOST_PP_ARRAY_REPLACE_O_I(n, i, elem, res, arr) (BOOST_PP_INC(n), i, elem, BOOST_PP_ARRAY_PUSH_BACK(res, BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(n, i), BOOST_PP_ARRAY_ELEM(n, arr), elem)), arr)
#
# else
#
# include <boost/preprocessor/arithmetic/inc.hpp>
# include <boost/preprocessor/array/elem.hpp>
# include <boost/preprocessor/array/push_back.hpp>
# include <boost/preprocessor/comparison/not_equal.hpp>
# include <boost/preprocessor/control/deduce_d.hpp>
# include <boost/preprocessor/control/iif.hpp>
# include <boost/preprocessor/control/while.hpp>
# if BOOST_PP_LIMIT_TUPLE == 256
# include <boost/preprocessor/logical/not.hpp>
# endif
# include <boost/preprocessor/tuple/elem.hpp>
#
# /* BOOST_PP_ARRAY_REPLACE */
#
# define BOOST_PP_ARRAY_REPLACE(array, i, elem) BOOST_PP_ARRAY_REPLACE_I(BOOST_PP_DEDUCE_D(), array, i, elem)
# define BOOST_PP_ARRAY_REPLACE_I(d, array, i, elem) BOOST_PP_ARRAY_REPLACE_D(d, array, i, elem)
#
# /* BOOST_PP_ARRAY_REPLACE_D */
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
# if BOOST_PP_LIMIT_TUPLE == 256
# define BOOST_PP_ARRAY_REPLACE_D(d, array, i, elem) BOOST_PP_ARRAY_REPLACE_ZERO_D(d, array, i, elem, BOOST_PP_NOT(i))
# else
# define BOOST_PP_ARRAY_REPLACE_D(d, array, i, elem) BOOST_PP_TUPLE_ELEM(5, 3, BOOST_PP_WHILE_ ## d(BOOST_PP_ARRAY_REPLACE_P, BOOST_PP_ARRAY_REPLACE_O, (0, i, elem, (0, ()), array)))
# endif
# else
# define BOOST_PP_ARRAY_REPLACE_D(d, array, i, elem) BOOST_PP_ARRAY_REPLACE_D_I(d, array, i, elem)
# if BOOST_PP_LIMIT_TUPLE == 256
# define BOOST_PP_ARRAY_REPLACE_D_I(d, array, i, elem) BOOST_PP_ARRAY_REPLACE_ZERO_D(d, array, i, elem, BOOST_PP_NOT(i))
# else
# define BOOST_PP_ARRAY_REPLACE_D_I(d, array, i, elem) BOOST_PP_TUPLE_ELEM(5, 3, BOOST_PP_WHILE_ ## d(BOOST_PP_ARRAY_REPLACE_P, BOOST_PP_ARRAY_REPLACE_O, (0, i, elem, (0, ()), array)))
# endif
# endif
#
# if BOOST_PP_LIMIT_TUPLE == 256
# define BOOST_PP_ARRAY_REPLACE_ZERO_D(d, array, i, elem, zero) \
BOOST_PP_TUPLE_ELEM(5, 3, BOOST_PP_WHILE_ ## d(BOOST_PP_ARRAY_REPLACE_P, BOOST_PP_ARRAY_REPLACE_O, \
(1, i, elem, BOOST_PP_IIF(zero,(1, (elem)),(1, (BOOST_PP_ARRAY_ELEM(0,array)))), array)))
# endif
#
# define BOOST_PP_ARRAY_REPLACE_P(d, state) BOOST_PP_NOT_EQUAL(BOOST_PP_TUPLE_ELEM(5, 0, state), BOOST_PP_ARRAY_SIZE(BOOST_PP_TUPLE_ELEM(5, 4, state)))
#
# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
# define BOOST_PP_ARRAY_REPLACE_O(d, state) BOOST_PP_ARRAY_REPLACE_O_I state
# else
# define BOOST_PP_ARRAY_REPLACE_O(d, state) BOOST_PP_ARRAY_REPLACE_O_I(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_TUPLE_ELEM(5, 4, state))
# endif
#
# define BOOST_PP_ARRAY_REPLACE_O_I(n, i, elem, res, arr) (BOOST_PP_INC(n), i, elem, BOOST_PP_ARRAY_PUSH_BACK(res, BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(n, i), BOOST_PP_ARRAY_ELEM(n, arr), elem)), arr)
#
# endif
#
# endif

View File

@ -22,13 +22,13 @@
# /* BOOST_PP_ARRAY_TO_LIST */
#
# define BOOST_PP_ARRAY_TO_LIST(array) \
BOOST_PP_IF \
( \
BOOST_PP_ARRAY_SIZE(array), \
BOOST_PP_ARRAY_TO_LIST_DO, \
BOOST_PP_ARRAY_TO_LIST_EMPTY \
) \
(array) \
BOOST_PP_IF \
( \
BOOST_PP_ARRAY_SIZE(array), \
BOOST_PP_ARRAY_TO_LIST_DO, \
BOOST_PP_ARRAY_TO_LIST_EMPTY \
) \
(array) \
/**/
#
# define BOOST_PP_ARRAY_TO_LIST_EMPTY(array) BOOST_PP_NIL

View File

@ -22,13 +22,13 @@
# /* BOOST_PP_ARRAY_TO_SEQ */
#
# define BOOST_PP_ARRAY_TO_SEQ(array) \
BOOST_PP_IF \
( \
BOOST_PP_ARRAY_SIZE(array), \
BOOST_PP_ARRAY_TO_SEQ_DO, \
BOOST_PP_ARRAY_TO_SEQ_EMPTY \
) \
(array) \
BOOST_PP_IF \
( \
BOOST_PP_ARRAY_SIZE(array), \
BOOST_PP_ARRAY_TO_SEQ_DO, \
BOOST_PP_ARRAY_TO_SEQ_EMPTY \
) \
(array) \
/**/
# define BOOST_PP_ARRAY_TO_SEQ_EMPTY(array)
#

View File

@ -20,13 +20,13 @@
# /* BOOST_PP_ARRAY_TO_TUPLE */
#
# define BOOST_PP_ARRAY_TO_TUPLE(array) \
BOOST_PP_IF \
( \
BOOST_PP_ARRAY_SIZE(array), \
BOOST_PP_ARRAY_DATA, \
BOOST_PP_ARRAY_TO_TUPLE_EMPTY \
) \
(array) \
BOOST_PP_IF \
( \
BOOST_PP_ARRAY_SIZE(array), \
BOOST_PP_ARRAY_DATA, \
BOOST_PP_ARRAY_TO_TUPLE_EMPTY \
) \
(array) \
/**/
# define BOOST_PP_ARRAY_TO_TUPLE_EMPTY(array)
#

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,793 @@
# /* Copyright (C) 2001
# * Housemarque Oy
# * http://www.housemarque.com
# *
# * 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)
# */
#
# /* Revised by Paul Mensonides (2002) */
#
# /* See http://www.boost.org for most recent version. */
#
# ifndef BOOST_PREPROCESSOR_COMPARISON_NOT_EQUAL_256_HPP
# define BOOST_PREPROCESSOR_COMPARISON_NOT_EQUAL_256_HPP
#
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_0(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_1(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_2(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_3(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_4(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_5(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_6(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_7(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_8(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_9(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_10(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_11(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_12(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_13(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_14(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_15(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_16(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_17(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_18(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_19(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_20(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_21(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_22(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_23(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_24(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_25(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_26(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_27(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_28(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_29(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_30(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_31(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_32(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_33(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_34(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_35(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_36(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_37(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_38(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_39(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_40(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_41(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_42(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_43(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_44(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_45(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_46(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_47(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_48(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_49(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_50(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_51(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_52(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_53(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_54(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_55(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_56(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_57(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_58(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_59(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_60(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_61(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_62(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_63(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_64(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_65(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_66(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_67(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_68(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_69(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_70(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_71(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_72(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_73(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_74(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_75(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_76(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_77(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_78(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_79(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_80(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_81(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_82(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_83(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_84(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_85(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_86(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_87(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_88(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_89(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_90(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_91(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_92(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_93(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_94(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_95(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_96(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_97(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_98(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_99(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_100(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_101(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_102(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_103(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_104(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_105(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_106(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_107(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_108(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_109(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_110(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_111(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_112(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_113(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_114(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_115(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_116(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_117(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_118(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_119(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_120(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_121(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_122(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_123(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_124(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_125(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_126(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_127(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_128(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_129(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_130(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_131(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_132(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_133(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_134(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_135(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_136(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_137(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_138(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_139(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_140(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_141(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_142(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_143(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_144(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_145(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_146(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_147(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_148(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_149(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_150(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_151(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_152(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_153(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_154(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_155(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_156(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_157(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_158(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_159(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_160(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_161(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_162(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_163(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_164(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_165(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_166(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_167(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_168(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_169(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_170(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_171(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_172(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_173(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_174(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_175(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_176(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_177(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_178(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_179(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_180(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_181(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_182(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_183(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_184(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_185(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_186(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_187(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_188(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_189(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_190(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_191(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_192(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_193(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_194(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_195(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_196(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_197(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_198(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_199(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_200(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_201(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_202(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_203(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_204(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_205(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_206(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_207(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_208(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_209(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_210(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_211(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_212(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_213(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_214(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_215(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_216(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_217(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_218(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_219(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_220(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_221(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_222(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_223(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_224(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_225(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_226(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_227(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_228(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_229(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_230(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_231(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_232(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_233(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_234(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_235(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_236(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_237(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_238(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_239(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_240(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_241(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_242(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_243(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_244(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_245(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_246(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_247(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_248(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_249(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_250(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_251(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_252(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_253(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_254(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_255(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_256(c, y) 0
#
#if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
# define BOOST_PP_NOT_EQUAL_0(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_1(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_2(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_3(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_4(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_5(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_6(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_7(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_8(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_9(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_10(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_11(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_12(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_13(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_14(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_15(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_16(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_17(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_18(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_19(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_20(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_21(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_22(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_23(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_24(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_25(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_26(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_27(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_28(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_29(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_30(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_31(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_32(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_33(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_34(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_35(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_36(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_37(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_38(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_39(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_40(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_41(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_42(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_43(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_44(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_45(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_46(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_47(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_48(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_49(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_50(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_51(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_52(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_53(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_54(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_55(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_56(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_57(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_58(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_59(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_60(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_61(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_62(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_63(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_64(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_65(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_66(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_67(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_68(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_69(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_70(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_71(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_72(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_73(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_74(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_75(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_76(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_77(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_78(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_79(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_80(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_81(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_82(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_83(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_84(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_85(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_86(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_87(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_88(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_89(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_90(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_91(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_92(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_93(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_94(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_95(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_96(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_97(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_98(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_99(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_100(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_101(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_102(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_103(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_104(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_105(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_106(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_107(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_108(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_109(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_110(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_111(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_112(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_113(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_114(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_115(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_116(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_117(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_118(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_119(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_120(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_121(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_122(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_123(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_124(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_125(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_126(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_127(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_128(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_129(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_130(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_131(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_132(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_133(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_134(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_135(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_136(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_137(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_138(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_139(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_140(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_141(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_142(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_143(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_144(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_145(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_146(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_147(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_148(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_149(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_150(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_151(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_152(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_153(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_154(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_155(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_156(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_157(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_158(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_159(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_160(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_161(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_162(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_163(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_164(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_165(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_166(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_167(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_168(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_169(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_170(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_171(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_172(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_173(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_174(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_175(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_176(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_177(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_178(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_179(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_180(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_181(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_182(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_183(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_184(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_185(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_186(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_187(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_188(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_189(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_190(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_191(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_192(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_193(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_194(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_195(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_196(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_197(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_198(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_199(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_200(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_201(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_202(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_203(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_204(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_205(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_206(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_207(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_208(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_209(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_210(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_211(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_212(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_213(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_214(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_215(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_216(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_217(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_218(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_219(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_220(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_221(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_222(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_223(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_224(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_225(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_226(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_227(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_228(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_229(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_230(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_231(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_232(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_233(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_234(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_235(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_236(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_237(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_238(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_239(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_240(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_241(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_242(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_243(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_244(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_245(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_246(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_247(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_248(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_249(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_250(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_251(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_252(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_253(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_254(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_255(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_256(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# else
# define BOOST_PP_NOT_EQUAL_0(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_1(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_2(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_3(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_4(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_5(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_6(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_7(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_8(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_9(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_10(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_11(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_12(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_13(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_14(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_15(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_16(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_17(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_18(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_19(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_20(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_21(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_22(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_23(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_24(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_25(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_26(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_27(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_28(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_29(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_30(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_31(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_32(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_33(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_34(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_35(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_36(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_37(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_38(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_39(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_40(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_41(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_42(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_43(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_44(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_45(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_46(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_47(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_48(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_49(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_50(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_51(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_52(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_53(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_54(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_55(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_56(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_57(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_58(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_59(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_60(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_61(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_62(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_63(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_64(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_65(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_66(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_67(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_68(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_69(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_70(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_71(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_72(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_73(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_74(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_75(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_76(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_77(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_78(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_79(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_80(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_81(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_82(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_83(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_84(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_85(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_86(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_87(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_88(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_89(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_90(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_91(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_92(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_93(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_94(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_95(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_96(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_97(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_98(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_99(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_100(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_101(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_102(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_103(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_104(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_105(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_106(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_107(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_108(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_109(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_110(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_111(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_112(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_113(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_114(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_115(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_116(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_117(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_118(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_119(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_120(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_121(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_122(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_123(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_124(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_125(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_126(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_127(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_128(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_129(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_130(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_131(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_132(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_133(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_134(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_135(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_136(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_137(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_138(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_139(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_140(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_141(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_142(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_143(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_144(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_145(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_146(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_147(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_148(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_149(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_150(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_151(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_152(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_153(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_154(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_155(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_156(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_157(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_158(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_159(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_160(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_161(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_162(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_163(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_164(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_165(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_166(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_167(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_168(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_169(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_170(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_171(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_172(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_173(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_174(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_175(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_176(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_177(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_178(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_179(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_180(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_181(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_182(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_183(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_184(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_185(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_186(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_187(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_188(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_189(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_190(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_191(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_192(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_193(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_194(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_195(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_196(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_197(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_198(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_199(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_200(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_201(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_202(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_203(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_204(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_205(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_206(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_207(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_208(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_209(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_210(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_211(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_212(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_213(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_214(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_215(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_216(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_217(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_218(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_219(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_220(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_221(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_222(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_223(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_224(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_225(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_226(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_227(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_228(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_229(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_230(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_231(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_232(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_233(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_234(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_235(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_236(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_237(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_238(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_239(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_240(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_241(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_242(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_243(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_244(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_245(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_246(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_247(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_248(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_249(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_250(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_251(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_252(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_253(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_254(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_255(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_256(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# endif
#
# endif

View File

@ -0,0 +1,532 @@
# /* Copyright (C) 2001
# * Housemarque Oy
# * http://www.housemarque.com
# *
# * 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)
# */
#
# /* Revised by Paul Mensonides (2002) */
# /* Revised by Edward Diener (2020) */
#
# /* See http://www.boost.org for most recent version. */
#
# ifndef BOOST_PREPROCESSOR_COMPARISON_NOT_EQUAL_512_HPP
# define BOOST_PREPROCESSOR_COMPARISON_NOT_EQUAL_512_HPP
#
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_257(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_258(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_259(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_260(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_261(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_262(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_263(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_264(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_265(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_266(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_267(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_268(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_269(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_270(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_271(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_272(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_273(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_274(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_275(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_276(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_277(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_278(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_279(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_280(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_281(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_282(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_283(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_284(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_285(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_286(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_287(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_288(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_289(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_290(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_291(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_292(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_293(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_294(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_295(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_296(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_297(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_298(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_299(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_300(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_301(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_302(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_303(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_304(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_305(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_306(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_307(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_308(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_309(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_310(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_311(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_312(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_313(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_314(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_315(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_316(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_317(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_318(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_319(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_320(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_321(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_322(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_323(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_324(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_325(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_326(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_327(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_328(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_329(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_330(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_331(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_332(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_333(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_334(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_335(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_336(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_337(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_338(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_339(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_340(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_341(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_342(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_343(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_344(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_345(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_346(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_347(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_348(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_349(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_350(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_351(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_352(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_353(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_354(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_355(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_356(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_357(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_358(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_359(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_360(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_361(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_362(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_363(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_364(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_365(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_366(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_367(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_368(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_369(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_370(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_371(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_372(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_373(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_374(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_375(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_376(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_377(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_378(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_379(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_380(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_381(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_382(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_383(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_384(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_385(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_386(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_387(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_388(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_389(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_390(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_391(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_392(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_393(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_394(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_395(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_396(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_397(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_398(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_399(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_400(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_401(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_402(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_403(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_404(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_405(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_406(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_407(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_408(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_409(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_410(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_411(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_412(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_413(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_414(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_415(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_416(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_417(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_418(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_419(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_420(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_421(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_422(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_423(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_424(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_425(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_426(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_427(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_428(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_429(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_430(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_431(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_432(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_433(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_434(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_435(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_436(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_437(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_438(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_439(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_440(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_441(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_442(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_443(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_444(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_445(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_446(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_447(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_448(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_449(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_450(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_451(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_452(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_453(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_454(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_455(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_456(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_457(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_458(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_459(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_460(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_461(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_462(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_463(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_464(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_465(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_466(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_467(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_468(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_469(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_470(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_471(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_472(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_473(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_474(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_475(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_476(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_477(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_478(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_479(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_480(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_481(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_482(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_483(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_484(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_485(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_486(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_487(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_488(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_489(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_490(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_491(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_492(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_493(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_494(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_495(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_496(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_497(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_498(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_499(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_500(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_501(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_502(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_503(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_504(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_505(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_506(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_507(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_508(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_509(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_510(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_511(c, y) 0
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NOT_EQUAL_512(c, y) 0
#
# define BOOST_PP_NOT_EQUAL_257(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_258(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_259(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_260(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_261(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_262(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_263(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_264(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_265(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_266(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_267(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_268(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_269(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_270(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_271(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_272(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_273(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_274(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_275(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_276(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_277(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_278(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_279(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_280(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_281(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_282(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_283(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_284(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_285(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_286(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_287(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_288(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_289(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_290(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_291(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_292(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_293(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_294(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_295(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_296(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_297(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_298(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_299(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_300(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_301(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_302(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_303(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_304(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_305(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_306(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_307(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_308(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_309(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_310(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_311(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_312(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_313(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_314(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_315(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_316(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_317(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_318(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_319(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_320(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_321(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_322(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_323(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_324(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_325(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_326(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_327(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_328(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_329(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_330(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_331(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_332(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_333(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_334(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_335(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_336(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_337(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_338(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_339(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_340(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_341(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_342(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_343(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_344(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_345(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_346(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_347(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_348(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_349(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_350(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_351(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_352(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_353(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_354(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_355(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_356(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_357(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_358(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_359(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_360(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_361(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_362(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_363(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_364(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_365(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_366(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_367(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_368(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_369(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_370(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_371(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_372(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_373(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_374(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_375(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_376(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_377(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_378(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_379(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_380(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_381(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_382(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_383(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_384(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_385(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_386(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_387(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_388(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_389(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_390(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_391(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_392(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_393(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_394(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_395(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_396(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_397(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_398(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_399(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_400(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_401(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_402(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_403(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_404(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_405(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_406(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_407(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_408(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_409(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_410(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_411(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_412(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_413(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_414(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_415(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_416(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_417(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_418(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_419(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_420(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_421(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_422(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_423(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_424(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_425(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_426(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_427(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_428(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_429(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_430(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_431(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_432(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_433(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_434(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_435(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_436(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_437(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_438(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_439(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_440(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_441(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_442(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_443(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_444(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_445(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_446(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_447(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_448(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_449(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_450(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_451(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_452(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_453(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_454(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_455(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_456(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_457(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_458(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_459(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_460(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_461(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_462(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_463(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_464(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_465(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_466(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_467(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_468(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_469(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_470(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_471(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_472(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_473(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_474(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_475(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_476(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_477(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_478(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_479(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_480(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_481(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_482(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_483(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_484(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_485(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_486(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_487(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_488(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_489(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_490(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_491(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_492(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_493(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_494(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_495(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_496(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_497(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_498(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_499(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_500(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_501(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_502(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_503(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_504(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_505(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_506(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_507(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_508(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_509(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_510(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_511(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
# define BOOST_PP_NOT_EQUAL_512(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y(1, BOOST_PP_NIL))
#
# endif

View File

@ -8,14 +8,18 @@
# */
#
# /* Revised by Paul Mensonides (2002) */
# /* Revised by Edward Diener (2020) */
#
# /* See http://www.boost.org for most recent version. */
#
# ifndef BOOST_PREPROCESSOR_COMPARISON_NOT_EQUAL_HPP
# define BOOST_PREPROCESSOR_COMPARISON_NOT_EQUAL_HPP
#
# include <boost/preprocessor/cat.hpp>
# include <boost/preprocessor/config/config.hpp>
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
#
# include <boost/preprocessor/cat.hpp>
# include <boost/preprocessor/control/iif.hpp>
#
# /* BOOST_PP_NOT_EQUAL */
@ -811,4 +815,43 @@
# define BOOST_PP_NOT_EQUAL_256(c, y) BOOST_PP_IIF(c, BOOST_PP_NIL, y##(1, BOOST_PP_NIL))
# endif
#
# else
#
# include <boost/preprocessor/cat.hpp>
# include <boost/preprocessor/control/iif.hpp>
#
# /* BOOST_PP_NOT_EQUAL */
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
# define BOOST_PP_NOT_EQUAL(x, y) BOOST_PP_NOT_EQUAL_I(x, y)
# else
# define BOOST_PP_NOT_EQUAL(x, y) BOOST_PP_NOT_EQUAL_OO((x, y))
# define BOOST_PP_NOT_EQUAL_OO(par) BOOST_PP_NOT_EQUAL_I ## par
# endif
#
# define BOOST_PP_NOT_EQUAL_I(x, y) BOOST_PP_CAT(BOOST_PP_NOT_EQUAL_CHECK_, BOOST_PP_NOT_EQUAL_ ## x(0, BOOST_PP_NOT_EQUAL_ ## y))
#
# /* BOOST_PP_NOT_EQUAL_D */
#
# define BOOST_PP_NOT_EQUAL_D(d, x, y) BOOST_PP_NOT_EQUAL(x, y)
#
# define BOOST_PP_NOT_EQUAL_CHECK_BOOST_PP_NIL 1
#
# include <boost/preprocessor/config/limits.hpp>
#
# if BOOST_PP_LIMIT_MAG == 256
# include <boost/preprocessor/comparison/limits/not_equal_256.hpp>
# elif BOOST_PP_LIMIT_MAG == 512
# include <boost/preprocessor/comparison/limits/not_equal_256.hpp>
# include <boost/preprocessor/comparison/limits/not_equal_512.hpp>
# elif BOOST_PP_LIMIT_MAG == 1024
# include <boost/preprocessor/comparison/limits/not_equal_256.hpp>
# include <boost/preprocessor/comparison/limits/not_equal_512.hpp>
# include <boost/preprocessor/comparison/limits/not_equal_1024.hpp>
# else
# error Incorrect value for the BOOST_PP_LIMIT_MAG limit
# endif
#
# endif
#
# endif

View File

@ -1,7 +1,7 @@
# /* **************************************************************************
# * *
# * (C) Copyright Paul Mensonides 2002-2011. *
# * (C) Copyright Edward Diener 2011. *
# * (C) Copyright Edward Diener 2011-2020. *
# * 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) *
@ -29,7 +29,11 @@
# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_STRICT())
# elif defined(__EDG__) || defined(__EDG_VERSION__)
# if defined(_MSC_VER) && !defined(__clang__) && (defined(__INTELLISENSE__) || __EDG_VERSION__ >= 308)
# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_MSVC())
# if !defined(_MSVC_TRADITIONAL) || _MSVC_TRADITIONAL
# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_MSVC())
# else
# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_STRICT())
# endif
# else
# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_EDG() | BOOST_PP_CONFIG_STRICT())
# endif
@ -44,7 +48,11 @@
# elif defined(__BORLANDC__) || defined(__IBMC__) || defined(__IBMCPP__) || defined(__SUNPRO_CC)
# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_BCC())
# elif defined(_MSC_VER)
# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_MSVC())
# if !defined(_MSVC_TRADITIONAL) || _MSVC_TRADITIONAL
# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_MSVC())
# else
# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_STRICT())
# endif
# else
# define BOOST_PP_CONFIG_FLAGS() (BOOST_PP_CONFIG_STRICT())
# endif
@ -68,37 +76,23 @@
#
# /* BOOST_PP_VARIADICS */
#
# define BOOST_PP_VARIADICS_MSVC 0
# if !defined BOOST_PP_VARIADICS
# /* variadic support explicitly disabled for all untested compilers */
# if defined __GCCXML__ || defined __CUDACC__ || defined __PATHSCALE__ || defined __DMC__ || defined __CODEGEARC__ || defined __BORLANDC__ || defined __MWERKS__ || ( defined __SUNPRO_CC && __SUNPRO_CC < 0x5120 ) || defined __HP_aCC && !defined __EDG__ || defined __MRC__ || defined __SC__ || defined __IBMCPP__ || defined __PGI
# define BOOST_PP_VARIADICS 0
# elif defined(_MSC_VER) && defined(__clang__)
# define BOOST_PP_VARIADICS 1
# /* VC++ (C/C++) and Intel C++ Compiler >= 17.0 with MSVC */
# elif defined _MSC_VER && _MSC_VER >= 1400 && (!defined __EDG__ || defined(__INTELLISENSE__) || defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 1700)
# define BOOST_PP_VARIADICS 1
# undef BOOST_PP_VARIADICS_MSVC
# define BOOST_PP_VARIADICS_MSVC 1
# /* Wave (C/C++), GCC (C++) */
# elif defined __WAVE__ && __WAVE_HAS_VARIADICS__ || defined __GNUC__ && defined __GXX_EXPERIMENTAL_CXX0X__ && __GXX_EXPERIMENTAL_CXX0X__
# define BOOST_PP_VARIADICS 1
# /* EDG-based (C/C++), GCC (C), and unknown (C/C++) */
# elif !defined __cplusplus && __STDC_VERSION__ >= 199901L || __cplusplus >= 201103L
# define BOOST_PP_VARIADICS 1
# else
# define BOOST_PP_VARIADICS 0
# endif
# elif !BOOST_PP_VARIADICS + 1 < 2
# if defined BOOST_PP_VARIADICS
# undef BOOST_PP_VARIADICS
# define BOOST_PP_VARIADICS 1
# if defined _MSC_VER && _MSC_VER >= 1400 && !defined(__clang__) && (defined(__INTELLISENSE__) || (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 1700) || !(defined __EDG__ || defined __GCCXML__ || defined __CUDACC__ || defined __PATHSCALE__ || defined __DMC__ || defined __CODEGEARC__ || defined __BORLANDC__ || defined __MWERKS__ || defined __SUNPRO_CC || defined __HP_aCC || defined __MRC__ || defined __SC__ || defined __IBMCPP__ || defined __PGI))
# undef BOOST_PP_VARIADICS_MSVC
# define BOOST_PP_VARIADICS_MSVC 1
# endif
# endif
# if defined BOOST_PP_VARIADICS_MSVC
# undef BOOST_PP_VARIADICS_MSVC
# endif
# define BOOST_PP_VARIADICS 1
# if defined _MSC_VER && _MSC_VER >= 1400 && !defined(__clang__) && (defined(__INTELLISENSE__) || (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 1700) || !(defined __EDG__ || defined __GCCXML__ || defined __PATHSCALE__ || defined __DMC__ || defined __CODEGEARC__ || defined __BORLANDC__ || defined __MWERKS__ || defined __SUNPRO_CC || defined __HP_aCC || defined __MRC__ || defined __SC__ || defined __IBMCPP__ || defined __PGI)) && (!defined(_MSVC_TRADITIONAL) || _MSVC_TRADITIONAL)
# define BOOST_PP_VARIADICS_MSVC 1
# else
# undef BOOST_PP_VARIADICS
# define BOOST_PP_VARIADICS 0
# define BOOST_PP_VARIADICS_MSVC 0
# endif
#
# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
# define BOOST_PP_IS_STANDARD() 1
# else
# define BOOST_PP_IS_STANDARD() 0
# endif
#
# endif

View File

@ -8,22 +8,155 @@
# */
#
# /* Revised by Paul Mensonides (2002) */
# /* Revised by Edward Diener (2011) */
# /* Revised by Edward Diener (2011,2020) */
#
# /* See http://www.boost.org for most recent version. */
#
# ifndef BOOST_PREPROCESSOR_CONFIG_LIMITS_HPP
# define BOOST_PREPROCESSOR_CONFIG_LIMITS_HPP
#
# include <boost/preprocessor/config/config.hpp>
#
# if defined(BOOST_PP_LIMIT_DIM)
# undef BOOST_PP_LIMIT_DIM
# endif
# if defined(BOOST_PP_LIMIT_ITERATION_DIM)
# undef BOOST_PP_LIMIT_ITERATION_DIM
# endif
# if defined(BOOST_PP_LIMIT_SLOT_SIG)
# undef BOOST_PP_LIMIT_SLOT_SIG
# endif
# if defined(BOOST_PP_LIMIT_SLOT_COUNT)
# undef BOOST_PP_LIMIT_SLOT_COUNT
# endif
# if defined(BOOST_PP_LIMIT_WHILE)
# undef BOOST_PP_LIMIT_WHILE
# endif
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
#
# if defined(BOOST_PP_LIMIT_MAG)
# undef BOOST_PP_LIMIT_MAG
# endif
# if defined(BOOST_PP_LIMIT_VARIADIC)
# undef BOOST_PP_LIMIT_VARIADIC
# endif
# if defined(BOOST_PP_LIMIT_TUPLE)
# undef BOOST_PP_LIMIT_TUPLE
# endif
# if defined(BOOST_PP_LIMIT_FOR)
# undef BOOST_PP_LIMIT_FOR
# endif
# if defined(BOOST_PP_LIMIT_REPEAT)
# undef BOOST_PP_LIMIT_REPEAT
# endif
# if defined(BOOST_PP_LIMIT_SEQ)
# undef BOOST_PP_LIMIT_SEQ
# endif
# if defined(BOOST_PP_LIMIT_ITERATION)
# undef BOOST_PP_LIMIT_ITERATION
# endif
#
# define BOOST_PP_LIMIT_MAG 256
# define BOOST_PP_LIMIT_TUPLE 64
# define BOOST_PP_LIMIT_DIM 3
# define BOOST_PP_LIMIT_REPEAT 256
# define BOOST_PP_LIMIT_WHILE 256
# define BOOST_PP_LIMIT_VARIADIC 64
# define BOOST_PP_LIMIT_TUPLE 64
# define BOOST_PP_LIMIT_FOR 256
# define BOOST_PP_LIMIT_ITERATION 256
# define BOOST_PP_LIMIT_ITERATION_DIM 3
# define BOOST_PP_LIMIT_SEQ 256
# define BOOST_PP_LIMIT_REPEAT 256
# define BOOST_PP_LIMIT_ITERATION 256
#
#else
#
# if defined(BOOST_PP_LIMIT_MAG)
# if !(BOOST_PP_LIMIT_MAG == 256 || BOOST_PP_LIMIT_MAG == 512 || BOOST_PP_LIMIT_MAG == 1024)
# undef BOOST_PP_LIMIT_MAG
# define BOOST_PP_LIMIT_MAG 256
# define BOOST_PP_LIMIT_WHILE 256
# else
# define BOOST_PP_LIMIT_WHILE BOOST_PP_LIMIT_MAG
# if !defined(BOOST_PP_LIMIT_SEQ)
# define BOOST_PP_LIMIT_SEQ BOOST_PP_LIMIT_MAG
# endif
# endif
# else
# define BOOST_PP_LIMIT_MAG 256
# define BOOST_PP_LIMIT_WHILE 256
# endif
#
# if defined(BOOST_PP_LIMIT_VARIADIC)
# if !(BOOST_PP_LIMIT_VARIADIC == 64 || BOOST_PP_LIMIT_VARIADIC == 128 || BOOST_PP_LIMIT_VARIADIC == 256)
# undef BOOST_PP_LIMIT_VARIADIC
# define BOOST_PP_LIMIT_VARIADIC 64
# endif
# else
# define BOOST_PP_LIMIT_VARIADIC 64
# endif
#
# if defined(BOOST_PP_LIMIT_TUPLE)
# if !(BOOST_PP_LIMIT_TUPLE == 64 || BOOST_PP_LIMIT_TUPLE == 128 || BOOST_PP_LIMIT_TUPLE == 256)
# undef BOOST_PP_LIMIT_TUPLE
# define BOOST_PP_LIMIT_TUPLE 64
# elif BOOST_PP_LIMIT_TUPLE > BOOST_PP_LIMIT_VARIADIC
# undef BOOST_PP_LIMIT_VARIADIC
# define BOOST_PP_LIMIT_VARIADIC BOOST_PP_LIMIT_TUPLE
# endif
# else
# define BOOST_PP_LIMIT_TUPLE 64
# endif
#
# if defined(BOOST_PP_LIMIT_FOR)
# if !(BOOST_PP_LIMIT_FOR == 256 || BOOST_PP_LIMIT_FOR == 512 || BOOST_PP_LIMIT_FOR == 1024)
# undef BOOST_PP_LIMIT_FOR
# define BOOST_PP_LIMIT_FOR 256
# elif BOOST_PP_LIMIT_FOR > BOOST_PP_LIMIT_MAG
# undef BOOST_PP_LIMIT_FOR
# define BOOST_PP_LIMIT_FOR BOOST_PP_LIMIT_MAG
# endif
# else
# define BOOST_PP_LIMIT_FOR 256
# endif
#
# if defined(BOOST_PP_LIMIT_REPEAT)
# if !(BOOST_PP_LIMIT_REPEAT == 256 || BOOST_PP_LIMIT_REPEAT == 512 || BOOST_PP_LIMIT_REPEAT == 1024)
# undef BOOST_PP_LIMIT_REPEAT
# define BOOST_PP_LIMIT_REPEAT 256
# elif BOOST_PP_LIMIT_REPEAT > BOOST_PP_LIMIT_MAG
# undef BOOST_PP_LIMIT_REPEAT
# define BOOST_PP_LIMIT_REPEAT BOOST_PP_LIMIT_MAG
# endif
# else
# define BOOST_PP_LIMIT_REPEAT 256
# endif
#
# if defined(BOOST_PP_LIMIT_SEQ)
# if !(BOOST_PP_LIMIT_SEQ == 256 || BOOST_PP_LIMIT_SEQ == 512 || BOOST_PP_LIMIT_SEQ == 1024)
# undef BOOST_PP_LIMIT_SEQ
# define BOOST_PP_LIMIT_SEQ 256
# elif BOOST_PP_LIMIT_SEQ > BOOST_PP_LIMIT_MAG
# undef BOOST_PP_LIMIT_SEQ
# define BOOST_PP_LIMIT_SEQ BOOST_PP_LIMIT_MAG
# endif
# else
# define BOOST_PP_LIMIT_SEQ 256
# endif
#
# if defined(BOOST_PP_LIMIT_ITERATION)
# if !(BOOST_PP_LIMIT_ITERATION == 256 || BOOST_PP_LIMIT_ITERATION == 512 || BOOST_PP_LIMIT_ITERATION == 1024)
# undef BOOST_PP_LIMIT_ITERATION
# define BOOST_PP_LIMIT_ITERATION 256
# elif BOOST_PP_LIMIT_ITERATION > BOOST_PP_LIMIT_MAG
# undef BOOST_PP_LIMIT_ITERATION
# define BOOST_PP_LIMIT_ITERATION BOOST_PP_LIMIT_MAG
# endif
# else
# define BOOST_PP_LIMIT_ITERATION 256
# endif
#
# endif
#
# define BOOST_PP_LIMIT_DIM 3
# define BOOST_PP_LIMIT_ITERATION_DIM 3
# define BOOST_PP_LIMIT_SLOT_SIG 10
# define BOOST_PP_LIMIT_SLOT_COUNT 5
#

View File

@ -7,11 +7,17 @@
# * *
# ************************************************************************** */
#
# /* Revised by Edward Diener (2020) */
#
# /* See http://www.boost.org for most recent version. */
#
# ifndef BOOST_PREPROCESSOR_CONTROL_DEDUCE_D_HPP
# define BOOST_PREPROCESSOR_CONTROL_DEDUCE_D_HPP
#
# include <boost/preprocessor/config/config.hpp>
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
#
# include <boost/preprocessor/control/while.hpp>
# include <boost/preprocessor/detail/auto_rec.hpp>
#
@ -19,4 +25,25 @@
#
# define BOOST_PP_DEDUCE_D() BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256)
#
# else
#
# include <boost/preprocessor/arithmetic/dec.hpp>
# include <boost/preprocessor/control/while.hpp>
# include <boost/preprocessor/detail/auto_rec.hpp>
# include <boost/preprocessor/config/limits.hpp>
#
# /* BOOST_PP_DEDUCE_D */
#
# if BOOST_PP_LIMIT_WHILE == 256
# define BOOST_PP_DEDUCE_D() BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256))
# elif BOOST_PP_LIMIT_WHILE == 512
# define BOOST_PP_DEDUCE_D() BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 512))
# elif BOOST_PP_LIMIT_WHILE == 1024
# define BOOST_PP_DEDUCE_D() BOOST_PP_DEC(BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 1024))
# else
# error Incorrect value for the BOOST_PP_LIMIT_WHILE limit
# endif
#
# endif
#
# endif

View File

@ -11,8 +11,8 @@
#
# /* See http://www.boost.org for most recent version. */
#
# ifndef BOOST_PREPROCESSOR_CONTROL_DETAIL_WHILE_HPP
# define BOOST_PREPROCESSOR_CONTROL_DETAIL_WHILE_HPP
# ifndef BOOST_PREPROCESSOR_CONTROL_DETAIL_DMC_WHILE_HPP
# define BOOST_PREPROCESSOR_CONTROL_DETAIL_DMC_WHILE_HPP
#
# include <boost/preprocessor/control/iif.hpp>
# include <boost/preprocessor/logical/bool.hpp>
@ -532,5 +532,4 @@
# define BOOST_PP_WHILE_255_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_256, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(256, s))
# define BOOST_PP_WHILE_256_C(c, p, o, s) BOOST_PP_IIF(c, BOOST_PP_WHILE_257, BOOST_PP_TUPLE_ELEM_3_2)(p, o, BOOST_PP_IIF(c, o, BOOST_PP_TUPLE_ELEM_2_1)(257, s))
#
#
# endif

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,533 @@
# /* Copyright (C) 2001
# * Housemarque Oy
# * http://www.housemarque.com
# *
# * 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)
# */
#
# /* Revised by Paul Mensonides (2002) */
#
# /* See http://www.boost.org for most recent version. */
#
# ifndef BOOST_PREPROCESSOR_CONTROL_DETAIL_EDG_WHILE_256_HPP
# define BOOST_PREPROCESSOR_CONTROL_DETAIL_EDG_WHILE_256_HPP
#
# define BOOST_PP_WHILE_0(p, o, s) BOOST_PP_WHILE_0_I(p, o, s)
# define BOOST_PP_WHILE_1(p, o, s) BOOST_PP_WHILE_1_I(p, o, s)
# define BOOST_PP_WHILE_2(p, o, s) BOOST_PP_WHILE_2_I(p, o, s)
# define BOOST_PP_WHILE_3(p, o, s) BOOST_PP_WHILE_3_I(p, o, s)
# define BOOST_PP_WHILE_4(p, o, s) BOOST_PP_WHILE_4_I(p, o, s)
# define BOOST_PP_WHILE_5(p, o, s) BOOST_PP_WHILE_5_I(p, o, s)
# define BOOST_PP_WHILE_6(p, o, s) BOOST_PP_WHILE_6_I(p, o, s)
# define BOOST_PP_WHILE_7(p, o, s) BOOST_PP_WHILE_7_I(p, o, s)
# define BOOST_PP_WHILE_8(p, o, s) BOOST_PP_WHILE_8_I(p, o, s)
# define BOOST_PP_WHILE_9(p, o, s) BOOST_PP_WHILE_9_I(p, o, s)
# define BOOST_PP_WHILE_10(p, o, s) BOOST_PP_WHILE_10_I(p, o, s)
# define BOOST_PP_WHILE_11(p, o, s) BOOST_PP_WHILE_11_I(p, o, s)
# define BOOST_PP_WHILE_12(p, o, s) BOOST_PP_WHILE_12_I(p, o, s)
# define BOOST_PP_WHILE_13(p, o, s) BOOST_PP_WHILE_13_I(p, o, s)
# define BOOST_PP_WHILE_14(p, o, s) BOOST_PP_WHILE_14_I(p, o, s)
# define BOOST_PP_WHILE_15(p, o, s) BOOST_PP_WHILE_15_I(p, o, s)
# define BOOST_PP_WHILE_16(p, o, s) BOOST_PP_WHILE_16_I(p, o, s)
# define BOOST_PP_WHILE_17(p, o, s) BOOST_PP_WHILE_17_I(p, o, s)
# define BOOST_PP_WHILE_18(p, o, s) BOOST_PP_WHILE_18_I(p, o, s)
# define BOOST_PP_WHILE_19(p, o, s) BOOST_PP_WHILE_19_I(p, o, s)
# define BOOST_PP_WHILE_20(p, o, s) BOOST_PP_WHILE_20_I(p, o, s)
# define BOOST_PP_WHILE_21(p, o, s) BOOST_PP_WHILE_21_I(p, o, s)
# define BOOST_PP_WHILE_22(p, o, s) BOOST_PP_WHILE_22_I(p, o, s)
# define BOOST_PP_WHILE_23(p, o, s) BOOST_PP_WHILE_23_I(p, o, s)
# define BOOST_PP_WHILE_24(p, o, s) BOOST_PP_WHILE_24_I(p, o, s)
# define BOOST_PP_WHILE_25(p, o, s) BOOST_PP_WHILE_25_I(p, o, s)
# define BOOST_PP_WHILE_26(p, o, s) BOOST_PP_WHILE_26_I(p, o, s)
# define BOOST_PP_WHILE_27(p, o, s) BOOST_PP_WHILE_27_I(p, o, s)
# define BOOST_PP_WHILE_28(p, o, s) BOOST_PP_WHILE_28_I(p, o, s)
# define BOOST_PP_WHILE_29(p, o, s) BOOST_PP_WHILE_29_I(p, o, s)
# define BOOST_PP_WHILE_30(p, o, s) BOOST_PP_WHILE_30_I(p, o, s)
# define BOOST_PP_WHILE_31(p, o, s) BOOST_PP_WHILE_31_I(p, o, s)
# define BOOST_PP_WHILE_32(p, o, s) BOOST_PP_WHILE_32_I(p, o, s)
# define BOOST_PP_WHILE_33(p, o, s) BOOST_PP_WHILE_33_I(p, o, s)
# define BOOST_PP_WHILE_34(p, o, s) BOOST_PP_WHILE_34_I(p, o, s)
# define BOOST_PP_WHILE_35(p, o, s) BOOST_PP_WHILE_35_I(p, o, s)
# define BOOST_PP_WHILE_36(p, o, s) BOOST_PP_WHILE_36_I(p, o, s)
# define BOOST_PP_WHILE_37(p, o, s) BOOST_PP_WHILE_37_I(p, o, s)
# define BOOST_PP_WHILE_38(p, o, s) BOOST_PP_WHILE_38_I(p, o, s)
# define BOOST_PP_WHILE_39(p, o, s) BOOST_PP_WHILE_39_I(p, o, s)
# define BOOST_PP_WHILE_40(p, o, s) BOOST_PP_WHILE_40_I(p, o, s)
# define BOOST_PP_WHILE_41(p, o, s) BOOST_PP_WHILE_41_I(p, o, s)
# define BOOST_PP_WHILE_42(p, o, s) BOOST_PP_WHILE_42_I(p, o, s)
# define BOOST_PP_WHILE_43(p, o, s) BOOST_PP_WHILE_43_I(p, o, s)
# define BOOST_PP_WHILE_44(p, o, s) BOOST_PP_WHILE_44_I(p, o, s)
# define BOOST_PP_WHILE_45(p, o, s) BOOST_PP_WHILE_45_I(p, o, s)
# define BOOST_PP_WHILE_46(p, o, s) BOOST_PP_WHILE_46_I(p, o, s)
# define BOOST_PP_WHILE_47(p, o, s) BOOST_PP_WHILE_47_I(p, o, s)
# define BOOST_PP_WHILE_48(p, o, s) BOOST_PP_WHILE_48_I(p, o, s)
# define BOOST_PP_WHILE_49(p, o, s) BOOST_PP_WHILE_49_I(p, o, s)
# define BOOST_PP_WHILE_50(p, o, s) BOOST_PP_WHILE_50_I(p, o, s)
# define BOOST_PP_WHILE_51(p, o, s) BOOST_PP_WHILE_51_I(p, o, s)
# define BOOST_PP_WHILE_52(p, o, s) BOOST_PP_WHILE_52_I(p, o, s)
# define BOOST_PP_WHILE_53(p, o, s) BOOST_PP_WHILE_53_I(p, o, s)
# define BOOST_PP_WHILE_54(p, o, s) BOOST_PP_WHILE_54_I(p, o, s)
# define BOOST_PP_WHILE_55(p, o, s) BOOST_PP_WHILE_55_I(p, o, s)
# define BOOST_PP_WHILE_56(p, o, s) BOOST_PP_WHILE_56_I(p, o, s)
# define BOOST_PP_WHILE_57(p, o, s) BOOST_PP_WHILE_57_I(p, o, s)
# define BOOST_PP_WHILE_58(p, o, s) BOOST_PP_WHILE_58_I(p, o, s)
# define BOOST_PP_WHILE_59(p, o, s) BOOST_PP_WHILE_59_I(p, o, s)
# define BOOST_PP_WHILE_60(p, o, s) BOOST_PP_WHILE_60_I(p, o, s)
# define BOOST_PP_WHILE_61(p, o, s) BOOST_PP_WHILE_61_I(p, o, s)
# define BOOST_PP_WHILE_62(p, o, s) BOOST_PP_WHILE_62_I(p, o, s)
# define BOOST_PP_WHILE_63(p, o, s) BOOST_PP_WHILE_63_I(p, o, s)
# define BOOST_PP_WHILE_64(p, o, s) BOOST_PP_WHILE_64_I(p, o, s)
# define BOOST_PP_WHILE_65(p, o, s) BOOST_PP_WHILE_65_I(p, o, s)
# define BOOST_PP_WHILE_66(p, o, s) BOOST_PP_WHILE_66_I(p, o, s)
# define BOOST_PP_WHILE_67(p, o, s) BOOST_PP_WHILE_67_I(p, o, s)
# define BOOST_PP_WHILE_68(p, o, s) BOOST_PP_WHILE_68_I(p, o, s)
# define BOOST_PP_WHILE_69(p, o, s) BOOST_PP_WHILE_69_I(p, o, s)
# define BOOST_PP_WHILE_70(p, o, s) BOOST_PP_WHILE_70_I(p, o, s)
# define BOOST_PP_WHILE_71(p, o, s) BOOST_PP_WHILE_71_I(p, o, s)
# define BOOST_PP_WHILE_72(p, o, s) BOOST_PP_WHILE_72_I(p, o, s)
# define BOOST_PP_WHILE_73(p, o, s) BOOST_PP_WHILE_73_I(p, o, s)
# define BOOST_PP_WHILE_74(p, o, s) BOOST_PP_WHILE_74_I(p, o, s)
# define BOOST_PP_WHILE_75(p, o, s) BOOST_PP_WHILE_75_I(p, o, s)
# define BOOST_PP_WHILE_76(p, o, s) BOOST_PP_WHILE_76_I(p, o, s)
# define BOOST_PP_WHILE_77(p, o, s) BOOST_PP_WHILE_77_I(p, o, s)
# define BOOST_PP_WHILE_78(p, o, s) BOOST_PP_WHILE_78_I(p, o, s)
# define BOOST_PP_WHILE_79(p, o, s) BOOST_PP_WHILE_79_I(p, o, s)
# define BOOST_PP_WHILE_80(p, o, s) BOOST_PP_WHILE_80_I(p, o, s)
# define BOOST_PP_WHILE_81(p, o, s) BOOST_PP_WHILE_81_I(p, o, s)
# define BOOST_PP_WHILE_82(p, o, s) BOOST_PP_WHILE_82_I(p, o, s)
# define BOOST_PP_WHILE_83(p, o, s) BOOST_PP_WHILE_83_I(p, o, s)
# define BOOST_PP_WHILE_84(p, o, s) BOOST_PP_WHILE_84_I(p, o, s)
# define BOOST_PP_WHILE_85(p, o, s) BOOST_PP_WHILE_85_I(p, o, s)
# define BOOST_PP_WHILE_86(p, o, s) BOOST_PP_WHILE_86_I(p, o, s)
# define BOOST_PP_WHILE_87(p, o, s) BOOST_PP_WHILE_87_I(p, o, s)
# define BOOST_PP_WHILE_88(p, o, s) BOOST_PP_WHILE_88_I(p, o, s)
# define BOOST_PP_WHILE_89(p, o, s) BOOST_PP_WHILE_89_I(p, o, s)
# define BOOST_PP_WHILE_90(p, o, s) BOOST_PP_WHILE_90_I(p, o, s)
# define BOOST_PP_WHILE_91(p, o, s) BOOST_PP_WHILE_91_I(p, o, s)
# define BOOST_PP_WHILE_92(p, o, s) BOOST_PP_WHILE_92_I(p, o, s)
# define BOOST_PP_WHILE_93(p, o, s) BOOST_PP_WHILE_93_I(p, o, s)
# define BOOST_PP_WHILE_94(p, o, s) BOOST_PP_WHILE_94_I(p, o, s)
# define BOOST_PP_WHILE_95(p, o, s) BOOST_PP_WHILE_95_I(p, o, s)
# define BOOST_PP_WHILE_96(p, o, s) BOOST_PP_WHILE_96_I(p, o, s)
# define BOOST_PP_WHILE_97(p, o, s) BOOST_PP_WHILE_97_I(p, o, s)
# define BOOST_PP_WHILE_98(p, o, s) BOOST_PP_WHILE_98_I(p, o, s)
# define BOOST_PP_WHILE_99(p, o, s) BOOST_PP_WHILE_99_I(p, o, s)
# define BOOST_PP_WHILE_100(p, o, s) BOOST_PP_WHILE_100_I(p, o, s)
# define BOOST_PP_WHILE_101(p, o, s) BOOST_PP_WHILE_101_I(p, o, s)
# define BOOST_PP_WHILE_102(p, o, s) BOOST_PP_WHILE_102_I(p, o, s)
# define BOOST_PP_WHILE_103(p, o, s) BOOST_PP_WHILE_103_I(p, o, s)
# define BOOST_PP_WHILE_104(p, o, s) BOOST_PP_WHILE_104_I(p, o, s)
# define BOOST_PP_WHILE_105(p, o, s) BOOST_PP_WHILE_105_I(p, o, s)
# define BOOST_PP_WHILE_106(p, o, s) BOOST_PP_WHILE_106_I(p, o, s)
# define BOOST_PP_WHILE_107(p, o, s) BOOST_PP_WHILE_107_I(p, o, s)
# define BOOST_PP_WHILE_108(p, o, s) BOOST_PP_WHILE_108_I(p, o, s)
# define BOOST_PP_WHILE_109(p, o, s) BOOST_PP_WHILE_109_I(p, o, s)
# define BOOST_PP_WHILE_110(p, o, s) BOOST_PP_WHILE_110_I(p, o, s)
# define BOOST_PP_WHILE_111(p, o, s) BOOST_PP_WHILE_111_I(p, o, s)
# define BOOST_PP_WHILE_112(p, o, s) BOOST_PP_WHILE_112_I(p, o, s)
# define BOOST_PP_WHILE_113(p, o, s) BOOST_PP_WHILE_113_I(p, o, s)
# define BOOST_PP_WHILE_114(p, o, s) BOOST_PP_WHILE_114_I(p, o, s)
# define BOOST_PP_WHILE_115(p, o, s) BOOST_PP_WHILE_115_I(p, o, s)
# define BOOST_PP_WHILE_116(p, o, s) BOOST_PP_WHILE_116_I(p, o, s)
# define BOOST_PP_WHILE_117(p, o, s) BOOST_PP_WHILE_117_I(p, o, s)
# define BOOST_PP_WHILE_118(p, o, s) BOOST_PP_WHILE_118_I(p, o, s)
# define BOOST_PP_WHILE_119(p, o, s) BOOST_PP_WHILE_119_I(p, o, s)
# define BOOST_PP_WHILE_120(p, o, s) BOOST_PP_WHILE_120_I(p, o, s)
# define BOOST_PP_WHILE_121(p, o, s) BOOST_PP_WHILE_121_I(p, o, s)
# define BOOST_PP_WHILE_122(p, o, s) BOOST_PP_WHILE_122_I(p, o, s)
# define BOOST_PP_WHILE_123(p, o, s) BOOST_PP_WHILE_123_I(p, o, s)
# define BOOST_PP_WHILE_124(p, o, s) BOOST_PP_WHILE_124_I(p, o, s)
# define BOOST_PP_WHILE_125(p, o, s) BOOST_PP_WHILE_125_I(p, o, s)
# define BOOST_PP_WHILE_126(p, o, s) BOOST_PP_WHILE_126_I(p, o, s)
# define BOOST_PP_WHILE_127(p, o, s) BOOST_PP_WHILE_127_I(p, o, s)
# define BOOST_PP_WHILE_128(p, o, s) BOOST_PP_WHILE_128_I(p, o, s)
# define BOOST_PP_WHILE_129(p, o, s) BOOST_PP_WHILE_129_I(p, o, s)
# define BOOST_PP_WHILE_130(p, o, s) BOOST_PP_WHILE_130_I(p, o, s)
# define BOOST_PP_WHILE_131(p, o, s) BOOST_PP_WHILE_131_I(p, o, s)
# define BOOST_PP_WHILE_132(p, o, s) BOOST_PP_WHILE_132_I(p, o, s)
# define BOOST_PP_WHILE_133(p, o, s) BOOST_PP_WHILE_133_I(p, o, s)
# define BOOST_PP_WHILE_134(p, o, s) BOOST_PP_WHILE_134_I(p, o, s)
# define BOOST_PP_WHILE_135(p, o, s) BOOST_PP_WHILE_135_I(p, o, s)
# define BOOST_PP_WHILE_136(p, o, s) BOOST_PP_WHILE_136_I(p, o, s)
# define BOOST_PP_WHILE_137(p, o, s) BOOST_PP_WHILE_137_I(p, o, s)
# define BOOST_PP_WHILE_138(p, o, s) BOOST_PP_WHILE_138_I(p, o, s)
# define BOOST_PP_WHILE_139(p, o, s) BOOST_PP_WHILE_139_I(p, o, s)
# define BOOST_PP_WHILE_140(p, o, s) BOOST_PP_WHILE_140_I(p, o, s)
# define BOOST_PP_WHILE_141(p, o, s) BOOST_PP_WHILE_141_I(p, o, s)
# define BOOST_PP_WHILE_142(p, o, s) BOOST_PP_WHILE_142_I(p, o, s)
# define BOOST_PP_WHILE_143(p, o, s) BOOST_PP_WHILE_143_I(p, o, s)
# define BOOST_PP_WHILE_144(p, o, s) BOOST_PP_WHILE_144_I(p, o, s)
# define BOOST_PP_WHILE_145(p, o, s) BOOST_PP_WHILE_145_I(p, o, s)
# define BOOST_PP_WHILE_146(p, o, s) BOOST_PP_WHILE_146_I(p, o, s)
# define BOOST_PP_WHILE_147(p, o, s) BOOST_PP_WHILE_147_I(p, o, s)
# define BOOST_PP_WHILE_148(p, o, s) BOOST_PP_WHILE_148_I(p, o, s)
# define BOOST_PP_WHILE_149(p, o, s) BOOST_PP_WHILE_149_I(p, o, s)
# define BOOST_PP_WHILE_150(p, o, s) BOOST_PP_WHILE_150_I(p, o, s)
# define BOOST_PP_WHILE_151(p, o, s) BOOST_PP_WHILE_151_I(p, o, s)
# define BOOST_PP_WHILE_152(p, o, s) BOOST_PP_WHILE_152_I(p, o, s)
# define BOOST_PP_WHILE_153(p, o, s) BOOST_PP_WHILE_153_I(p, o, s)
# define BOOST_PP_WHILE_154(p, o, s) BOOST_PP_WHILE_154_I(p, o, s)
# define BOOST_PP_WHILE_155(p, o, s) BOOST_PP_WHILE_155_I(p, o, s)
# define BOOST_PP_WHILE_156(p, o, s) BOOST_PP_WHILE_156_I(p, o, s)
# define BOOST_PP_WHILE_157(p, o, s) BOOST_PP_WHILE_157_I(p, o, s)
# define BOOST_PP_WHILE_158(p, o, s) BOOST_PP_WHILE_158_I(p, o, s)
# define BOOST_PP_WHILE_159(p, o, s) BOOST_PP_WHILE_159_I(p, o, s)
# define BOOST_PP_WHILE_160(p, o, s) BOOST_PP_WHILE_160_I(p, o, s)
# define BOOST_PP_WHILE_161(p, o, s) BOOST_PP_WHILE_161_I(p, o, s)
# define BOOST_PP_WHILE_162(p, o, s) BOOST_PP_WHILE_162_I(p, o, s)
# define BOOST_PP_WHILE_163(p, o, s) BOOST_PP_WHILE_163_I(p, o, s)
# define BOOST_PP_WHILE_164(p, o, s) BOOST_PP_WHILE_164_I(p, o, s)
# define BOOST_PP_WHILE_165(p, o, s) BOOST_PP_WHILE_165_I(p, o, s)
# define BOOST_PP_WHILE_166(p, o, s) BOOST_PP_WHILE_166_I(p, o, s)
# define BOOST_PP_WHILE_167(p, o, s) BOOST_PP_WHILE_167_I(p, o, s)
# define BOOST_PP_WHILE_168(p, o, s) BOOST_PP_WHILE_168_I(p, o, s)
# define BOOST_PP_WHILE_169(p, o, s) BOOST_PP_WHILE_169_I(p, o, s)
# define BOOST_PP_WHILE_170(p, o, s) BOOST_PP_WHILE_170_I(p, o, s)
# define BOOST_PP_WHILE_171(p, o, s) BOOST_PP_WHILE_171_I(p, o, s)
# define BOOST_PP_WHILE_172(p, o, s) BOOST_PP_WHILE_172_I(p, o, s)
# define BOOST_PP_WHILE_173(p, o, s) BOOST_PP_WHILE_173_I(p, o, s)
# define BOOST_PP_WHILE_174(p, o, s) BOOST_PP_WHILE_174_I(p, o, s)
# define BOOST_PP_WHILE_175(p, o, s) BOOST_PP_WHILE_175_I(p, o, s)
# define BOOST_PP_WHILE_176(p, o, s) BOOST_PP_WHILE_176_I(p, o, s)
# define BOOST_PP_WHILE_177(p, o, s) BOOST_PP_WHILE_177_I(p, o, s)
# define BOOST_PP_WHILE_178(p, o, s) BOOST_PP_WHILE_178_I(p, o, s)
# define BOOST_PP_WHILE_179(p, o, s) BOOST_PP_WHILE_179_I(p, o, s)
# define BOOST_PP_WHILE_180(p, o, s) BOOST_PP_WHILE_180_I(p, o, s)
# define BOOST_PP_WHILE_181(p, o, s) BOOST_PP_WHILE_181_I(p, o, s)
# define BOOST_PP_WHILE_182(p, o, s) BOOST_PP_WHILE_182_I(p, o, s)
# define BOOST_PP_WHILE_183(p, o, s) BOOST_PP_WHILE_183_I(p, o, s)
# define BOOST_PP_WHILE_184(p, o, s) BOOST_PP_WHILE_184_I(p, o, s)
# define BOOST_PP_WHILE_185(p, o, s) BOOST_PP_WHILE_185_I(p, o, s)
# define BOOST_PP_WHILE_186(p, o, s) BOOST_PP_WHILE_186_I(p, o, s)
# define BOOST_PP_WHILE_187(p, o, s) BOOST_PP_WHILE_187_I(p, o, s)
# define BOOST_PP_WHILE_188(p, o, s) BOOST_PP_WHILE_188_I(p, o, s)
# define BOOST_PP_WHILE_189(p, o, s) BOOST_PP_WHILE_189_I(p, o, s)
# define BOOST_PP_WHILE_190(p, o, s) BOOST_PP_WHILE_190_I(p, o, s)
# define BOOST_PP_WHILE_191(p, o, s) BOOST_PP_WHILE_191_I(p, o, s)
# define BOOST_PP_WHILE_192(p, o, s) BOOST_PP_WHILE_192_I(p, o, s)
# define BOOST_PP_WHILE_193(p, o, s) BOOST_PP_WHILE_193_I(p, o, s)
# define BOOST_PP_WHILE_194(p, o, s) BOOST_PP_WHILE_194_I(p, o, s)
# define BOOST_PP_WHILE_195(p, o, s) BOOST_PP_WHILE_195_I(p, o, s)
# define BOOST_PP_WHILE_196(p, o, s) BOOST_PP_WHILE_196_I(p, o, s)
# define BOOST_PP_WHILE_197(p, o, s) BOOST_PP_WHILE_197_I(p, o, s)
# define BOOST_PP_WHILE_198(p, o, s) BOOST_PP_WHILE_198_I(p, o, s)
# define BOOST_PP_WHILE_199(p, o, s) BOOST_PP_WHILE_199_I(p, o, s)
# define BOOST_PP_WHILE_200(p, o, s) BOOST_PP_WHILE_200_I(p, o, s)
# define BOOST_PP_WHILE_201(p, o, s) BOOST_PP_WHILE_201_I(p, o, s)
# define BOOST_PP_WHILE_202(p, o, s) BOOST_PP_WHILE_202_I(p, o, s)
# define BOOST_PP_WHILE_203(p, o, s) BOOST_PP_WHILE_203_I(p, o, s)
# define BOOST_PP_WHILE_204(p, o, s) BOOST_PP_WHILE_204_I(p, o, s)
# define BOOST_PP_WHILE_205(p, o, s) BOOST_PP_WHILE_205_I(p, o, s)
# define BOOST_PP_WHILE_206(p, o, s) BOOST_PP_WHILE_206_I(p, o, s)
# define BOOST_PP_WHILE_207(p, o, s) BOOST_PP_WHILE_207_I(p, o, s)
# define BOOST_PP_WHILE_208(p, o, s) BOOST_PP_WHILE_208_I(p, o, s)
# define BOOST_PP_WHILE_209(p, o, s) BOOST_PP_WHILE_209_I(p, o, s)
# define BOOST_PP_WHILE_210(p, o, s) BOOST_PP_WHILE_210_I(p, o, s)
# define BOOST_PP_WHILE_211(p, o, s) BOOST_PP_WHILE_211_I(p, o, s)
# define BOOST_PP_WHILE_212(p, o, s) BOOST_PP_WHILE_212_I(p, o, s)
# define BOOST_PP_WHILE_213(p, o, s) BOOST_PP_WHILE_213_I(p, o, s)
# define BOOST_PP_WHILE_214(p, o, s) BOOST_PP_WHILE_214_I(p, o, s)
# define BOOST_PP_WHILE_215(p, o, s) BOOST_PP_WHILE_215_I(p, o, s)
# define BOOST_PP_WHILE_216(p, o, s) BOOST_PP_WHILE_216_I(p, o, s)
# define BOOST_PP_WHILE_217(p, o, s) BOOST_PP_WHILE_217_I(p, o, s)
# define BOOST_PP_WHILE_218(p, o, s) BOOST_PP_WHILE_218_I(p, o, s)
# define BOOST_PP_WHILE_219(p, o, s) BOOST_PP_WHILE_219_I(p, o, s)
# define BOOST_PP_WHILE_220(p, o, s) BOOST_PP_WHILE_220_I(p, o, s)
# define BOOST_PP_WHILE_221(p, o, s) BOOST_PP_WHILE_221_I(p, o, s)
# define BOOST_PP_WHILE_222(p, o, s) BOOST_PP_WHILE_222_I(p, o, s)
# define BOOST_PP_WHILE_223(p, o, s) BOOST_PP_WHILE_223_I(p, o, s)
# define BOOST_PP_WHILE_224(p, o, s) BOOST_PP_WHILE_224_I(p, o, s)
# define BOOST_PP_WHILE_225(p, o, s) BOOST_PP_WHILE_225_I(p, o, s)
# define BOOST_PP_WHILE_226(p, o, s) BOOST_PP_WHILE_226_I(p, o, s)
# define BOOST_PP_WHILE_227(p, o, s) BOOST_PP_WHILE_227_I(p, o, s)
# define BOOST_PP_WHILE_228(p, o, s) BOOST_PP_WHILE_228_I(p, o, s)
# define BOOST_PP_WHILE_229(p, o, s) BOOST_PP_WHILE_229_I(p, o, s)
# define BOOST_PP_WHILE_230(p, o, s) BOOST_PP_WHILE_230_I(p, o, s)
# define BOOST_PP_WHILE_231(p, o, s) BOOST_PP_WHILE_231_I(p, o, s)
# define BOOST_PP_WHILE_232(p, o, s) BOOST_PP_WHILE_232_I(p, o, s)
# define BOOST_PP_WHILE_233(p, o, s) BOOST_PP_WHILE_233_I(p, o, s)
# define BOOST_PP_WHILE_234(p, o, s) BOOST_PP_WHILE_234_I(p, o, s)
# define BOOST_PP_WHILE_235(p, o, s) BOOST_PP_WHILE_235_I(p, o, s)
# define BOOST_PP_WHILE_236(p, o, s) BOOST_PP_WHILE_236_I(p, o, s)
# define BOOST_PP_WHILE_237(p, o, s) BOOST_PP_WHILE_237_I(p, o, s)
# define BOOST_PP_WHILE_238(p, o, s) BOOST_PP_WHILE_238_I(p, o, s)
# define BOOST_PP_WHILE_239(p, o, s) BOOST_PP_WHILE_239_I(p, o, s)
# define BOOST_PP_WHILE_240(p, o, s) BOOST_PP_WHILE_240_I(p, o, s)
# define BOOST_PP_WHILE_241(p, o, s) BOOST_PP_WHILE_241_I(p, o, s)
# define BOOST_PP_WHILE_242(p, o, s) BOOST_PP_WHILE_242_I(p, o, s)
# define BOOST_PP_WHILE_243(p, o, s) BOOST_PP_WHILE_243_I(p, o, s)
# define BOOST_PP_WHILE_244(p, o, s) BOOST_PP_WHILE_244_I(p, o, s)
# define BOOST_PP_WHILE_245(p, o, s) BOOST_PP_WHILE_245_I(p, o, s)
# define BOOST_PP_WHILE_246(p, o, s) BOOST_PP_WHILE_246_I(p, o, s)
# define BOOST_PP_WHILE_247(p, o, s) BOOST_PP_WHILE_247_I(p, o, s)
# define BOOST_PP_WHILE_248(p, o, s) BOOST_PP_WHILE_248_I(p, o, s)
# define BOOST_PP_WHILE_249(p, o, s) BOOST_PP_WHILE_249_I(p, o, s)
# define BOOST_PP_WHILE_250(p, o, s) BOOST_PP_WHILE_250_I(p, o, s)
# define BOOST_PP_WHILE_251(p, o, s) BOOST_PP_WHILE_251_I(p, o, s)
# define BOOST_PP_WHILE_252(p, o, s) BOOST_PP_WHILE_252_I(p, o, s)
# define BOOST_PP_WHILE_253(p, o, s) BOOST_PP_WHILE_253_I(p, o, s)
# define BOOST_PP_WHILE_254(p, o, s) BOOST_PP_WHILE_254_I(p, o, s)
# define BOOST_PP_WHILE_255(p, o, s) BOOST_PP_WHILE_255_I(p, o, s)
# define BOOST_PP_WHILE_256(p, o, s) BOOST_PP_WHILE_256_I(p, o, s)
#
# define BOOST_PP_WHILE_0_I(p, o, s) BOOST_PP_IF(p(1, s), BOOST_PP_WHILE_1, s BOOST_PP_TUPLE_EAT_3)(p, o, o(1, s))
# define BOOST_PP_WHILE_1_I(p, o, s) BOOST_PP_IF(p(2, s), BOOST_PP_WHILE_2, s BOOST_PP_TUPLE_EAT_3)(p, o, o(2, s))
# define BOOST_PP_WHILE_2_I(p, o, s) BOOST_PP_IF(p(3, s), BOOST_PP_WHILE_3, s BOOST_PP_TUPLE_EAT_3)(p, o, o(3, s))
# define BOOST_PP_WHILE_3_I(p, o, s) BOOST_PP_IF(p(4, s), BOOST_PP_WHILE_4, s BOOST_PP_TUPLE_EAT_3)(p, o, o(4, s))
# define BOOST_PP_WHILE_4_I(p, o, s) BOOST_PP_IF(p(5, s), BOOST_PP_WHILE_5, s BOOST_PP_TUPLE_EAT_3)(p, o, o(5, s))
# define BOOST_PP_WHILE_5_I(p, o, s) BOOST_PP_IF(p(6, s), BOOST_PP_WHILE_6, s BOOST_PP_TUPLE_EAT_3)(p, o, o(6, s))
# define BOOST_PP_WHILE_6_I(p, o, s) BOOST_PP_IF(p(7, s), BOOST_PP_WHILE_7, s BOOST_PP_TUPLE_EAT_3)(p, o, o(7, s))
# define BOOST_PP_WHILE_7_I(p, o, s) BOOST_PP_IF(p(8, s), BOOST_PP_WHILE_8, s BOOST_PP_TUPLE_EAT_3)(p, o, o(8, s))
# define BOOST_PP_WHILE_8_I(p, o, s) BOOST_PP_IF(p(9, s), BOOST_PP_WHILE_9, s BOOST_PP_TUPLE_EAT_3)(p, o, o(9, s))
# define BOOST_PP_WHILE_9_I(p, o, s) BOOST_PP_IF(p(10, s), BOOST_PP_WHILE_10, s BOOST_PP_TUPLE_EAT_3)(p, o, o(10, s))
# define BOOST_PP_WHILE_10_I(p, o, s) BOOST_PP_IF(p(11, s), BOOST_PP_WHILE_11, s BOOST_PP_TUPLE_EAT_3)(p, o, o(11, s))
# define BOOST_PP_WHILE_11_I(p, o, s) BOOST_PP_IF(p(12, s), BOOST_PP_WHILE_12, s BOOST_PP_TUPLE_EAT_3)(p, o, o(12, s))
# define BOOST_PP_WHILE_12_I(p, o, s) BOOST_PP_IF(p(13, s), BOOST_PP_WHILE_13, s BOOST_PP_TUPLE_EAT_3)(p, o, o(13, s))
# define BOOST_PP_WHILE_13_I(p, o, s) BOOST_PP_IF(p(14, s), BOOST_PP_WHILE_14, s BOOST_PP_TUPLE_EAT_3)(p, o, o(14, s))
# define BOOST_PP_WHILE_14_I(p, o, s) BOOST_PP_IF(p(15, s), BOOST_PP_WHILE_15, s BOOST_PP_TUPLE_EAT_3)(p, o, o(15, s))
# define BOOST_PP_WHILE_15_I(p, o, s) BOOST_PP_IF(p(16, s), BOOST_PP_WHILE_16, s BOOST_PP_TUPLE_EAT_3)(p, o, o(16, s))
# define BOOST_PP_WHILE_16_I(p, o, s) BOOST_PP_IF(p(17, s), BOOST_PP_WHILE_17, s BOOST_PP_TUPLE_EAT_3)(p, o, o(17, s))
# define BOOST_PP_WHILE_17_I(p, o, s) BOOST_PP_IF(p(18, s), BOOST_PP_WHILE_18, s BOOST_PP_TUPLE_EAT_3)(p, o, o(18, s))
# define BOOST_PP_WHILE_18_I(p, o, s) BOOST_PP_IF(p(19, s), BOOST_PP_WHILE_19, s BOOST_PP_TUPLE_EAT_3)(p, o, o(19, s))
# define BOOST_PP_WHILE_19_I(p, o, s) BOOST_PP_IF(p(20, s), BOOST_PP_WHILE_20, s BOOST_PP_TUPLE_EAT_3)(p, o, o(20, s))
# define BOOST_PP_WHILE_20_I(p, o, s) BOOST_PP_IF(p(21, s), BOOST_PP_WHILE_21, s BOOST_PP_TUPLE_EAT_3)(p, o, o(21, s))
# define BOOST_PP_WHILE_21_I(p, o, s) BOOST_PP_IF(p(22, s), BOOST_PP_WHILE_22, s BOOST_PP_TUPLE_EAT_3)(p, o, o(22, s))
# define BOOST_PP_WHILE_22_I(p, o, s) BOOST_PP_IF(p(23, s), BOOST_PP_WHILE_23, s BOOST_PP_TUPLE_EAT_3)(p, o, o(23, s))
# define BOOST_PP_WHILE_23_I(p, o, s) BOOST_PP_IF(p(24, s), BOOST_PP_WHILE_24, s BOOST_PP_TUPLE_EAT_3)(p, o, o(24, s))
# define BOOST_PP_WHILE_24_I(p, o, s) BOOST_PP_IF(p(25, s), BOOST_PP_WHILE_25, s BOOST_PP_TUPLE_EAT_3)(p, o, o(25, s))
# define BOOST_PP_WHILE_25_I(p, o, s) BOOST_PP_IF(p(26, s), BOOST_PP_WHILE_26, s BOOST_PP_TUPLE_EAT_3)(p, o, o(26, s))
# define BOOST_PP_WHILE_26_I(p, o, s) BOOST_PP_IF(p(27, s), BOOST_PP_WHILE_27, s BOOST_PP_TUPLE_EAT_3)(p, o, o(27, s))
# define BOOST_PP_WHILE_27_I(p, o, s) BOOST_PP_IF(p(28, s), BOOST_PP_WHILE_28, s BOOST_PP_TUPLE_EAT_3)(p, o, o(28, s))
# define BOOST_PP_WHILE_28_I(p, o, s) BOOST_PP_IF(p(29, s), BOOST_PP_WHILE_29, s BOOST_PP_TUPLE_EAT_3)(p, o, o(29, s))
# define BOOST_PP_WHILE_29_I(p, o, s) BOOST_PP_IF(p(30, s), BOOST_PP_WHILE_30, s BOOST_PP_TUPLE_EAT_3)(p, o, o(30, s))
# define BOOST_PP_WHILE_30_I(p, o, s) BOOST_PP_IF(p(31, s), BOOST_PP_WHILE_31, s BOOST_PP_TUPLE_EAT_3)(p, o, o(31, s))
# define BOOST_PP_WHILE_31_I(p, o, s) BOOST_PP_IF(p(32, s), BOOST_PP_WHILE_32, s BOOST_PP_TUPLE_EAT_3)(p, o, o(32, s))
# define BOOST_PP_WHILE_32_I(p, o, s) BOOST_PP_IF(p(33, s), BOOST_PP_WHILE_33, s BOOST_PP_TUPLE_EAT_3)(p, o, o(33, s))
# define BOOST_PP_WHILE_33_I(p, o, s) BOOST_PP_IF(p(34, s), BOOST_PP_WHILE_34, s BOOST_PP_TUPLE_EAT_3)(p, o, o(34, s))
# define BOOST_PP_WHILE_34_I(p, o, s) BOOST_PP_IF(p(35, s), BOOST_PP_WHILE_35, s BOOST_PP_TUPLE_EAT_3)(p, o, o(35, s))
# define BOOST_PP_WHILE_35_I(p, o, s) BOOST_PP_IF(p(36, s), BOOST_PP_WHILE_36, s BOOST_PP_TUPLE_EAT_3)(p, o, o(36, s))
# define BOOST_PP_WHILE_36_I(p, o, s) BOOST_PP_IF(p(37, s), BOOST_PP_WHILE_37, s BOOST_PP_TUPLE_EAT_3)(p, o, o(37, s))
# define BOOST_PP_WHILE_37_I(p, o, s) BOOST_PP_IF(p(38, s), BOOST_PP_WHILE_38, s BOOST_PP_TUPLE_EAT_3)(p, o, o(38, s))
# define BOOST_PP_WHILE_38_I(p, o, s) BOOST_PP_IF(p(39, s), BOOST_PP_WHILE_39, s BOOST_PP_TUPLE_EAT_3)(p, o, o(39, s))
# define BOOST_PP_WHILE_39_I(p, o, s) BOOST_PP_IF(p(40, s), BOOST_PP_WHILE_40, s BOOST_PP_TUPLE_EAT_3)(p, o, o(40, s))
# define BOOST_PP_WHILE_40_I(p, o, s) BOOST_PP_IF(p(41, s), BOOST_PP_WHILE_41, s BOOST_PP_TUPLE_EAT_3)(p, o, o(41, s))
# define BOOST_PP_WHILE_41_I(p, o, s) BOOST_PP_IF(p(42, s), BOOST_PP_WHILE_42, s BOOST_PP_TUPLE_EAT_3)(p, o, o(42, s))
# define BOOST_PP_WHILE_42_I(p, o, s) BOOST_PP_IF(p(43, s), BOOST_PP_WHILE_43, s BOOST_PP_TUPLE_EAT_3)(p, o, o(43, s))
# define BOOST_PP_WHILE_43_I(p, o, s) BOOST_PP_IF(p(44, s), BOOST_PP_WHILE_44, s BOOST_PP_TUPLE_EAT_3)(p, o, o(44, s))
# define BOOST_PP_WHILE_44_I(p, o, s) BOOST_PP_IF(p(45, s), BOOST_PP_WHILE_45, s BOOST_PP_TUPLE_EAT_3)(p, o, o(45, s))
# define BOOST_PP_WHILE_45_I(p, o, s) BOOST_PP_IF(p(46, s), BOOST_PP_WHILE_46, s BOOST_PP_TUPLE_EAT_3)(p, o, o(46, s))
# define BOOST_PP_WHILE_46_I(p, o, s) BOOST_PP_IF(p(47, s), BOOST_PP_WHILE_47, s BOOST_PP_TUPLE_EAT_3)(p, o, o(47, s))
# define BOOST_PP_WHILE_47_I(p, o, s) BOOST_PP_IF(p(48, s), BOOST_PP_WHILE_48, s BOOST_PP_TUPLE_EAT_3)(p, o, o(48, s))
# define BOOST_PP_WHILE_48_I(p, o, s) BOOST_PP_IF(p(49, s), BOOST_PP_WHILE_49, s BOOST_PP_TUPLE_EAT_3)(p, o, o(49, s))
# define BOOST_PP_WHILE_49_I(p, o, s) BOOST_PP_IF(p(50, s), BOOST_PP_WHILE_50, s BOOST_PP_TUPLE_EAT_3)(p, o, o(50, s))
# define BOOST_PP_WHILE_50_I(p, o, s) BOOST_PP_IF(p(51, s), BOOST_PP_WHILE_51, s BOOST_PP_TUPLE_EAT_3)(p, o, o(51, s))
# define BOOST_PP_WHILE_51_I(p, o, s) BOOST_PP_IF(p(52, s), BOOST_PP_WHILE_52, s BOOST_PP_TUPLE_EAT_3)(p, o, o(52, s))
# define BOOST_PP_WHILE_52_I(p, o, s) BOOST_PP_IF(p(53, s), BOOST_PP_WHILE_53, s BOOST_PP_TUPLE_EAT_3)(p, o, o(53, s))
# define BOOST_PP_WHILE_53_I(p, o, s) BOOST_PP_IF(p(54, s), BOOST_PP_WHILE_54, s BOOST_PP_TUPLE_EAT_3)(p, o, o(54, s))
# define BOOST_PP_WHILE_54_I(p, o, s) BOOST_PP_IF(p(55, s), BOOST_PP_WHILE_55, s BOOST_PP_TUPLE_EAT_3)(p, o, o(55, s))
# define BOOST_PP_WHILE_55_I(p, o, s) BOOST_PP_IF(p(56, s), BOOST_PP_WHILE_56, s BOOST_PP_TUPLE_EAT_3)(p, o, o(56, s))
# define BOOST_PP_WHILE_56_I(p, o, s) BOOST_PP_IF(p(57, s), BOOST_PP_WHILE_57, s BOOST_PP_TUPLE_EAT_3)(p, o, o(57, s))
# define BOOST_PP_WHILE_57_I(p, o, s) BOOST_PP_IF(p(58, s), BOOST_PP_WHILE_58, s BOOST_PP_TUPLE_EAT_3)(p, o, o(58, s))
# define BOOST_PP_WHILE_58_I(p, o, s) BOOST_PP_IF(p(59, s), BOOST_PP_WHILE_59, s BOOST_PP_TUPLE_EAT_3)(p, o, o(59, s))
# define BOOST_PP_WHILE_59_I(p, o, s) BOOST_PP_IF(p(60, s), BOOST_PP_WHILE_60, s BOOST_PP_TUPLE_EAT_3)(p, o, o(60, s))
# define BOOST_PP_WHILE_60_I(p, o, s) BOOST_PP_IF(p(61, s), BOOST_PP_WHILE_61, s BOOST_PP_TUPLE_EAT_3)(p, o, o(61, s))
# define BOOST_PP_WHILE_61_I(p, o, s) BOOST_PP_IF(p(62, s), BOOST_PP_WHILE_62, s BOOST_PP_TUPLE_EAT_3)(p, o, o(62, s))
# define BOOST_PP_WHILE_62_I(p, o, s) BOOST_PP_IF(p(63, s), BOOST_PP_WHILE_63, s BOOST_PP_TUPLE_EAT_3)(p, o, o(63, s))
# define BOOST_PP_WHILE_63_I(p, o, s) BOOST_PP_IF(p(64, s), BOOST_PP_WHILE_64, s BOOST_PP_TUPLE_EAT_3)(p, o, o(64, s))
# define BOOST_PP_WHILE_64_I(p, o, s) BOOST_PP_IF(p(65, s), BOOST_PP_WHILE_65, s BOOST_PP_TUPLE_EAT_3)(p, o, o(65, s))
# define BOOST_PP_WHILE_65_I(p, o, s) BOOST_PP_IF(p(66, s), BOOST_PP_WHILE_66, s BOOST_PP_TUPLE_EAT_3)(p, o, o(66, s))
# define BOOST_PP_WHILE_66_I(p, o, s) BOOST_PP_IF(p(67, s), BOOST_PP_WHILE_67, s BOOST_PP_TUPLE_EAT_3)(p, o, o(67, s))
# define BOOST_PP_WHILE_67_I(p, o, s) BOOST_PP_IF(p(68, s), BOOST_PP_WHILE_68, s BOOST_PP_TUPLE_EAT_3)(p, o, o(68, s))
# define BOOST_PP_WHILE_68_I(p, o, s) BOOST_PP_IF(p(69, s), BOOST_PP_WHILE_69, s BOOST_PP_TUPLE_EAT_3)(p, o, o(69, s))
# define BOOST_PP_WHILE_69_I(p, o, s) BOOST_PP_IF(p(70, s), BOOST_PP_WHILE_70, s BOOST_PP_TUPLE_EAT_3)(p, o, o(70, s))
# define BOOST_PP_WHILE_70_I(p, o, s) BOOST_PP_IF(p(71, s), BOOST_PP_WHILE_71, s BOOST_PP_TUPLE_EAT_3)(p, o, o(71, s))
# define BOOST_PP_WHILE_71_I(p, o, s) BOOST_PP_IF(p(72, s), BOOST_PP_WHILE_72, s BOOST_PP_TUPLE_EAT_3)(p, o, o(72, s))
# define BOOST_PP_WHILE_72_I(p, o, s) BOOST_PP_IF(p(73, s), BOOST_PP_WHILE_73, s BOOST_PP_TUPLE_EAT_3)(p, o, o(73, s))
# define BOOST_PP_WHILE_73_I(p, o, s) BOOST_PP_IF(p(74, s), BOOST_PP_WHILE_74, s BOOST_PP_TUPLE_EAT_3)(p, o, o(74, s))
# define BOOST_PP_WHILE_74_I(p, o, s) BOOST_PP_IF(p(75, s), BOOST_PP_WHILE_75, s BOOST_PP_TUPLE_EAT_3)(p, o, o(75, s))
# define BOOST_PP_WHILE_75_I(p, o, s) BOOST_PP_IF(p(76, s), BOOST_PP_WHILE_76, s BOOST_PP_TUPLE_EAT_3)(p, o, o(76, s))
# define BOOST_PP_WHILE_76_I(p, o, s) BOOST_PP_IF(p(77, s), BOOST_PP_WHILE_77, s BOOST_PP_TUPLE_EAT_3)(p, o, o(77, s))
# define BOOST_PP_WHILE_77_I(p, o, s) BOOST_PP_IF(p(78, s), BOOST_PP_WHILE_78, s BOOST_PP_TUPLE_EAT_3)(p, o, o(78, s))
# define BOOST_PP_WHILE_78_I(p, o, s) BOOST_PP_IF(p(79, s), BOOST_PP_WHILE_79, s BOOST_PP_TUPLE_EAT_3)(p, o, o(79, s))
# define BOOST_PP_WHILE_79_I(p, o, s) BOOST_PP_IF(p(80, s), BOOST_PP_WHILE_80, s BOOST_PP_TUPLE_EAT_3)(p, o, o(80, s))
# define BOOST_PP_WHILE_80_I(p, o, s) BOOST_PP_IF(p(81, s), BOOST_PP_WHILE_81, s BOOST_PP_TUPLE_EAT_3)(p, o, o(81, s))
# define BOOST_PP_WHILE_81_I(p, o, s) BOOST_PP_IF(p(82, s), BOOST_PP_WHILE_82, s BOOST_PP_TUPLE_EAT_3)(p, o, o(82, s))
# define BOOST_PP_WHILE_82_I(p, o, s) BOOST_PP_IF(p(83, s), BOOST_PP_WHILE_83, s BOOST_PP_TUPLE_EAT_3)(p, o, o(83, s))
# define BOOST_PP_WHILE_83_I(p, o, s) BOOST_PP_IF(p(84, s), BOOST_PP_WHILE_84, s BOOST_PP_TUPLE_EAT_3)(p, o, o(84, s))
# define BOOST_PP_WHILE_84_I(p, o, s) BOOST_PP_IF(p(85, s), BOOST_PP_WHILE_85, s BOOST_PP_TUPLE_EAT_3)(p, o, o(85, s))
# define BOOST_PP_WHILE_85_I(p, o, s) BOOST_PP_IF(p(86, s), BOOST_PP_WHILE_86, s BOOST_PP_TUPLE_EAT_3)(p, o, o(86, s))
# define BOOST_PP_WHILE_86_I(p, o, s) BOOST_PP_IF(p(87, s), BOOST_PP_WHILE_87, s BOOST_PP_TUPLE_EAT_3)(p, o, o(87, s))
# define BOOST_PP_WHILE_87_I(p, o, s) BOOST_PP_IF(p(88, s), BOOST_PP_WHILE_88, s BOOST_PP_TUPLE_EAT_3)(p, o, o(88, s))
# define BOOST_PP_WHILE_88_I(p, o, s) BOOST_PP_IF(p(89, s), BOOST_PP_WHILE_89, s BOOST_PP_TUPLE_EAT_3)(p, o, o(89, s))
# define BOOST_PP_WHILE_89_I(p, o, s) BOOST_PP_IF(p(90, s), BOOST_PP_WHILE_90, s BOOST_PP_TUPLE_EAT_3)(p, o, o(90, s))
# define BOOST_PP_WHILE_90_I(p, o, s) BOOST_PP_IF(p(91, s), BOOST_PP_WHILE_91, s BOOST_PP_TUPLE_EAT_3)(p, o, o(91, s))
# define BOOST_PP_WHILE_91_I(p, o, s) BOOST_PP_IF(p(92, s), BOOST_PP_WHILE_92, s BOOST_PP_TUPLE_EAT_3)(p, o, o(92, s))
# define BOOST_PP_WHILE_92_I(p, o, s) BOOST_PP_IF(p(93, s), BOOST_PP_WHILE_93, s BOOST_PP_TUPLE_EAT_3)(p, o, o(93, s))
# define BOOST_PP_WHILE_93_I(p, o, s) BOOST_PP_IF(p(94, s), BOOST_PP_WHILE_94, s BOOST_PP_TUPLE_EAT_3)(p, o, o(94, s))
# define BOOST_PP_WHILE_94_I(p, o, s) BOOST_PP_IF(p(95, s), BOOST_PP_WHILE_95, s BOOST_PP_TUPLE_EAT_3)(p, o, o(95, s))
# define BOOST_PP_WHILE_95_I(p, o, s) BOOST_PP_IF(p(96, s), BOOST_PP_WHILE_96, s BOOST_PP_TUPLE_EAT_3)(p, o, o(96, s))
# define BOOST_PP_WHILE_96_I(p, o, s) BOOST_PP_IF(p(97, s), BOOST_PP_WHILE_97, s BOOST_PP_TUPLE_EAT_3)(p, o, o(97, s))
# define BOOST_PP_WHILE_97_I(p, o, s) BOOST_PP_IF(p(98, s), BOOST_PP_WHILE_98, s BOOST_PP_TUPLE_EAT_3)(p, o, o(98, s))
# define BOOST_PP_WHILE_98_I(p, o, s) BOOST_PP_IF(p(99, s), BOOST_PP_WHILE_99, s BOOST_PP_TUPLE_EAT_3)(p, o, o(99, s))
# define BOOST_PP_WHILE_99_I(p, o, s) BOOST_PP_IF(p(100, s), BOOST_PP_WHILE_100, s BOOST_PP_TUPLE_EAT_3)(p, o, o(100, s))
# define BOOST_PP_WHILE_100_I(p, o, s) BOOST_PP_IF(p(101, s), BOOST_PP_WHILE_101, s BOOST_PP_TUPLE_EAT_3)(p, o, o(101, s))
# define BOOST_PP_WHILE_101_I(p, o, s) BOOST_PP_IF(p(102, s), BOOST_PP_WHILE_102, s BOOST_PP_TUPLE_EAT_3)(p, o, o(102, s))
# define BOOST_PP_WHILE_102_I(p, o, s) BOOST_PP_IF(p(103, s), BOOST_PP_WHILE_103, s BOOST_PP_TUPLE_EAT_3)(p, o, o(103, s))
# define BOOST_PP_WHILE_103_I(p, o, s) BOOST_PP_IF(p(104, s), BOOST_PP_WHILE_104, s BOOST_PP_TUPLE_EAT_3)(p, o, o(104, s))
# define BOOST_PP_WHILE_104_I(p, o, s) BOOST_PP_IF(p(105, s), BOOST_PP_WHILE_105, s BOOST_PP_TUPLE_EAT_3)(p, o, o(105, s))
# define BOOST_PP_WHILE_105_I(p, o, s) BOOST_PP_IF(p(106, s), BOOST_PP_WHILE_106, s BOOST_PP_TUPLE_EAT_3)(p, o, o(106, s))
# define BOOST_PP_WHILE_106_I(p, o, s) BOOST_PP_IF(p(107, s), BOOST_PP_WHILE_107, s BOOST_PP_TUPLE_EAT_3)(p, o, o(107, s))
# define BOOST_PP_WHILE_107_I(p, o, s) BOOST_PP_IF(p(108, s), BOOST_PP_WHILE_108, s BOOST_PP_TUPLE_EAT_3)(p, o, o(108, s))
# define BOOST_PP_WHILE_108_I(p, o, s) BOOST_PP_IF(p(109, s), BOOST_PP_WHILE_109, s BOOST_PP_TUPLE_EAT_3)(p, o, o(109, s))
# define BOOST_PP_WHILE_109_I(p, o, s) BOOST_PP_IF(p(110, s), BOOST_PP_WHILE_110, s BOOST_PP_TUPLE_EAT_3)(p, o, o(110, s))
# define BOOST_PP_WHILE_110_I(p, o, s) BOOST_PP_IF(p(111, s), BOOST_PP_WHILE_111, s BOOST_PP_TUPLE_EAT_3)(p, o, o(111, s))
# define BOOST_PP_WHILE_111_I(p, o, s) BOOST_PP_IF(p(112, s), BOOST_PP_WHILE_112, s BOOST_PP_TUPLE_EAT_3)(p, o, o(112, s))
# define BOOST_PP_WHILE_112_I(p, o, s) BOOST_PP_IF(p(113, s), BOOST_PP_WHILE_113, s BOOST_PP_TUPLE_EAT_3)(p, o, o(113, s))
# define BOOST_PP_WHILE_113_I(p, o, s) BOOST_PP_IF(p(114, s), BOOST_PP_WHILE_114, s BOOST_PP_TUPLE_EAT_3)(p, o, o(114, s))
# define BOOST_PP_WHILE_114_I(p, o, s) BOOST_PP_IF(p(115, s), BOOST_PP_WHILE_115, s BOOST_PP_TUPLE_EAT_3)(p, o, o(115, s))
# define BOOST_PP_WHILE_115_I(p, o, s) BOOST_PP_IF(p(116, s), BOOST_PP_WHILE_116, s BOOST_PP_TUPLE_EAT_3)(p, o, o(116, s))
# define BOOST_PP_WHILE_116_I(p, o, s) BOOST_PP_IF(p(117, s), BOOST_PP_WHILE_117, s BOOST_PP_TUPLE_EAT_3)(p, o, o(117, s))
# define BOOST_PP_WHILE_117_I(p, o, s) BOOST_PP_IF(p(118, s), BOOST_PP_WHILE_118, s BOOST_PP_TUPLE_EAT_3)(p, o, o(118, s))
# define BOOST_PP_WHILE_118_I(p, o, s) BOOST_PP_IF(p(119, s), BOOST_PP_WHILE_119, s BOOST_PP_TUPLE_EAT_3)(p, o, o(119, s))
# define BOOST_PP_WHILE_119_I(p, o, s) BOOST_PP_IF(p(120, s), BOOST_PP_WHILE_120, s BOOST_PP_TUPLE_EAT_3)(p, o, o(120, s))
# define BOOST_PP_WHILE_120_I(p, o, s) BOOST_PP_IF(p(121, s), BOOST_PP_WHILE_121, s BOOST_PP_TUPLE_EAT_3)(p, o, o(121, s))
# define BOOST_PP_WHILE_121_I(p, o, s) BOOST_PP_IF(p(122, s), BOOST_PP_WHILE_122, s BOOST_PP_TUPLE_EAT_3)(p, o, o(122, s))
# define BOOST_PP_WHILE_122_I(p, o, s) BOOST_PP_IF(p(123, s), BOOST_PP_WHILE_123, s BOOST_PP_TUPLE_EAT_3)(p, o, o(123, s))
# define BOOST_PP_WHILE_123_I(p, o, s) BOOST_PP_IF(p(124, s), BOOST_PP_WHILE_124, s BOOST_PP_TUPLE_EAT_3)(p, o, o(124, s))
# define BOOST_PP_WHILE_124_I(p, o, s) BOOST_PP_IF(p(125, s), BOOST_PP_WHILE_125, s BOOST_PP_TUPLE_EAT_3)(p, o, o(125, s))
# define BOOST_PP_WHILE_125_I(p, o, s) BOOST_PP_IF(p(126, s), BOOST_PP_WHILE_126, s BOOST_PP_TUPLE_EAT_3)(p, o, o(126, s))
# define BOOST_PP_WHILE_126_I(p, o, s) BOOST_PP_IF(p(127, s), BOOST_PP_WHILE_127, s BOOST_PP_TUPLE_EAT_3)(p, o, o(127, s))
# define BOOST_PP_WHILE_127_I(p, o, s) BOOST_PP_IF(p(128, s), BOOST_PP_WHILE_128, s BOOST_PP_TUPLE_EAT_3)(p, o, o(128, s))
# define BOOST_PP_WHILE_128_I(p, o, s) BOOST_PP_IF(p(129, s), BOOST_PP_WHILE_129, s BOOST_PP_TUPLE_EAT_3)(p, o, o(129, s))
# define BOOST_PP_WHILE_129_I(p, o, s) BOOST_PP_IF(p(130, s), BOOST_PP_WHILE_130, s BOOST_PP_TUPLE_EAT_3)(p, o, o(130, s))
# define BOOST_PP_WHILE_130_I(p, o, s) BOOST_PP_IF(p(131, s), BOOST_PP_WHILE_131, s BOOST_PP_TUPLE_EAT_3)(p, o, o(131, s))
# define BOOST_PP_WHILE_131_I(p, o, s) BOOST_PP_IF(p(132, s), BOOST_PP_WHILE_132, s BOOST_PP_TUPLE_EAT_3)(p, o, o(132, s))
# define BOOST_PP_WHILE_132_I(p, o, s) BOOST_PP_IF(p(133, s), BOOST_PP_WHILE_133, s BOOST_PP_TUPLE_EAT_3)(p, o, o(133, s))
# define BOOST_PP_WHILE_133_I(p, o, s) BOOST_PP_IF(p(134, s), BOOST_PP_WHILE_134, s BOOST_PP_TUPLE_EAT_3)(p, o, o(134, s))
# define BOOST_PP_WHILE_134_I(p, o, s) BOOST_PP_IF(p(135, s), BOOST_PP_WHILE_135, s BOOST_PP_TUPLE_EAT_3)(p, o, o(135, s))
# define BOOST_PP_WHILE_135_I(p, o, s) BOOST_PP_IF(p(136, s), BOOST_PP_WHILE_136, s BOOST_PP_TUPLE_EAT_3)(p, o, o(136, s))
# define BOOST_PP_WHILE_136_I(p, o, s) BOOST_PP_IF(p(137, s), BOOST_PP_WHILE_137, s BOOST_PP_TUPLE_EAT_3)(p, o, o(137, s))
# define BOOST_PP_WHILE_137_I(p, o, s) BOOST_PP_IF(p(138, s), BOOST_PP_WHILE_138, s BOOST_PP_TUPLE_EAT_3)(p, o, o(138, s))
# define BOOST_PP_WHILE_138_I(p, o, s) BOOST_PP_IF(p(139, s), BOOST_PP_WHILE_139, s BOOST_PP_TUPLE_EAT_3)(p, o, o(139, s))
# define BOOST_PP_WHILE_139_I(p, o, s) BOOST_PP_IF(p(140, s), BOOST_PP_WHILE_140, s BOOST_PP_TUPLE_EAT_3)(p, o, o(140, s))
# define BOOST_PP_WHILE_140_I(p, o, s) BOOST_PP_IF(p(141, s), BOOST_PP_WHILE_141, s BOOST_PP_TUPLE_EAT_3)(p, o, o(141, s))
# define BOOST_PP_WHILE_141_I(p, o, s) BOOST_PP_IF(p(142, s), BOOST_PP_WHILE_142, s BOOST_PP_TUPLE_EAT_3)(p, o, o(142, s))
# define BOOST_PP_WHILE_142_I(p, o, s) BOOST_PP_IF(p(143, s), BOOST_PP_WHILE_143, s BOOST_PP_TUPLE_EAT_3)(p, o, o(143, s))
# define BOOST_PP_WHILE_143_I(p, o, s) BOOST_PP_IF(p(144, s), BOOST_PP_WHILE_144, s BOOST_PP_TUPLE_EAT_3)(p, o, o(144, s))
# define BOOST_PP_WHILE_144_I(p, o, s) BOOST_PP_IF(p(145, s), BOOST_PP_WHILE_145, s BOOST_PP_TUPLE_EAT_3)(p, o, o(145, s))
# define BOOST_PP_WHILE_145_I(p, o, s) BOOST_PP_IF(p(146, s), BOOST_PP_WHILE_146, s BOOST_PP_TUPLE_EAT_3)(p, o, o(146, s))
# define BOOST_PP_WHILE_146_I(p, o, s) BOOST_PP_IF(p(147, s), BOOST_PP_WHILE_147, s BOOST_PP_TUPLE_EAT_3)(p, o, o(147, s))
# define BOOST_PP_WHILE_147_I(p, o, s) BOOST_PP_IF(p(148, s), BOOST_PP_WHILE_148, s BOOST_PP_TUPLE_EAT_3)(p, o, o(148, s))
# define BOOST_PP_WHILE_148_I(p, o, s) BOOST_PP_IF(p(149, s), BOOST_PP_WHILE_149, s BOOST_PP_TUPLE_EAT_3)(p, o, o(149, s))
# define BOOST_PP_WHILE_149_I(p, o, s) BOOST_PP_IF(p(150, s), BOOST_PP_WHILE_150, s BOOST_PP_TUPLE_EAT_3)(p, o, o(150, s))
# define BOOST_PP_WHILE_150_I(p, o, s) BOOST_PP_IF(p(151, s), BOOST_PP_WHILE_151, s BOOST_PP_TUPLE_EAT_3)(p, o, o(151, s))
# define BOOST_PP_WHILE_151_I(p, o, s) BOOST_PP_IF(p(152, s), BOOST_PP_WHILE_152, s BOOST_PP_TUPLE_EAT_3)(p, o, o(152, s))
# define BOOST_PP_WHILE_152_I(p, o, s) BOOST_PP_IF(p(153, s), BOOST_PP_WHILE_153, s BOOST_PP_TUPLE_EAT_3)(p, o, o(153, s))
# define BOOST_PP_WHILE_153_I(p, o, s) BOOST_PP_IF(p(154, s), BOOST_PP_WHILE_154, s BOOST_PP_TUPLE_EAT_3)(p, o, o(154, s))
# define BOOST_PP_WHILE_154_I(p, o, s) BOOST_PP_IF(p(155, s), BOOST_PP_WHILE_155, s BOOST_PP_TUPLE_EAT_3)(p, o, o(155, s))
# define BOOST_PP_WHILE_155_I(p, o, s) BOOST_PP_IF(p(156, s), BOOST_PP_WHILE_156, s BOOST_PP_TUPLE_EAT_3)(p, o, o(156, s))
# define BOOST_PP_WHILE_156_I(p, o, s) BOOST_PP_IF(p(157, s), BOOST_PP_WHILE_157, s BOOST_PP_TUPLE_EAT_3)(p, o, o(157, s))
# define BOOST_PP_WHILE_157_I(p, o, s) BOOST_PP_IF(p(158, s), BOOST_PP_WHILE_158, s BOOST_PP_TUPLE_EAT_3)(p, o, o(158, s))
# define BOOST_PP_WHILE_158_I(p, o, s) BOOST_PP_IF(p(159, s), BOOST_PP_WHILE_159, s BOOST_PP_TUPLE_EAT_3)(p, o, o(159, s))
# define BOOST_PP_WHILE_159_I(p, o, s) BOOST_PP_IF(p(160, s), BOOST_PP_WHILE_160, s BOOST_PP_TUPLE_EAT_3)(p, o, o(160, s))
# define BOOST_PP_WHILE_160_I(p, o, s) BOOST_PP_IF(p(161, s), BOOST_PP_WHILE_161, s BOOST_PP_TUPLE_EAT_3)(p, o, o(161, s))
# define BOOST_PP_WHILE_161_I(p, o, s) BOOST_PP_IF(p(162, s), BOOST_PP_WHILE_162, s BOOST_PP_TUPLE_EAT_3)(p, o, o(162, s))
# define BOOST_PP_WHILE_162_I(p, o, s) BOOST_PP_IF(p(163, s), BOOST_PP_WHILE_163, s BOOST_PP_TUPLE_EAT_3)(p, o, o(163, s))
# define BOOST_PP_WHILE_163_I(p, o, s) BOOST_PP_IF(p(164, s), BOOST_PP_WHILE_164, s BOOST_PP_TUPLE_EAT_3)(p, o, o(164, s))
# define BOOST_PP_WHILE_164_I(p, o, s) BOOST_PP_IF(p(165, s), BOOST_PP_WHILE_165, s BOOST_PP_TUPLE_EAT_3)(p, o, o(165, s))
# define BOOST_PP_WHILE_165_I(p, o, s) BOOST_PP_IF(p(166, s), BOOST_PP_WHILE_166, s BOOST_PP_TUPLE_EAT_3)(p, o, o(166, s))
# define BOOST_PP_WHILE_166_I(p, o, s) BOOST_PP_IF(p(167, s), BOOST_PP_WHILE_167, s BOOST_PP_TUPLE_EAT_3)(p, o, o(167, s))
# define BOOST_PP_WHILE_167_I(p, o, s) BOOST_PP_IF(p(168, s), BOOST_PP_WHILE_168, s BOOST_PP_TUPLE_EAT_3)(p, o, o(168, s))
# define BOOST_PP_WHILE_168_I(p, o, s) BOOST_PP_IF(p(169, s), BOOST_PP_WHILE_169, s BOOST_PP_TUPLE_EAT_3)(p, o, o(169, s))
# define BOOST_PP_WHILE_169_I(p, o, s) BOOST_PP_IF(p(170, s), BOOST_PP_WHILE_170, s BOOST_PP_TUPLE_EAT_3)(p, o, o(170, s))
# define BOOST_PP_WHILE_170_I(p, o, s) BOOST_PP_IF(p(171, s), BOOST_PP_WHILE_171, s BOOST_PP_TUPLE_EAT_3)(p, o, o(171, s))
# define BOOST_PP_WHILE_171_I(p, o, s) BOOST_PP_IF(p(172, s), BOOST_PP_WHILE_172, s BOOST_PP_TUPLE_EAT_3)(p, o, o(172, s))
# define BOOST_PP_WHILE_172_I(p, o, s) BOOST_PP_IF(p(173, s), BOOST_PP_WHILE_173, s BOOST_PP_TUPLE_EAT_3)(p, o, o(173, s))
# define BOOST_PP_WHILE_173_I(p, o, s) BOOST_PP_IF(p(174, s), BOOST_PP_WHILE_174, s BOOST_PP_TUPLE_EAT_3)(p, o, o(174, s))
# define BOOST_PP_WHILE_174_I(p, o, s) BOOST_PP_IF(p(175, s), BOOST_PP_WHILE_175, s BOOST_PP_TUPLE_EAT_3)(p, o, o(175, s))
# define BOOST_PP_WHILE_175_I(p, o, s) BOOST_PP_IF(p(176, s), BOOST_PP_WHILE_176, s BOOST_PP_TUPLE_EAT_3)(p, o, o(176, s))
# define BOOST_PP_WHILE_176_I(p, o, s) BOOST_PP_IF(p(177, s), BOOST_PP_WHILE_177, s BOOST_PP_TUPLE_EAT_3)(p, o, o(177, s))
# define BOOST_PP_WHILE_177_I(p, o, s) BOOST_PP_IF(p(178, s), BOOST_PP_WHILE_178, s BOOST_PP_TUPLE_EAT_3)(p, o, o(178, s))
# define BOOST_PP_WHILE_178_I(p, o, s) BOOST_PP_IF(p(179, s), BOOST_PP_WHILE_179, s BOOST_PP_TUPLE_EAT_3)(p, o, o(179, s))
# define BOOST_PP_WHILE_179_I(p, o, s) BOOST_PP_IF(p(180, s), BOOST_PP_WHILE_180, s BOOST_PP_TUPLE_EAT_3)(p, o, o(180, s))
# define BOOST_PP_WHILE_180_I(p, o, s) BOOST_PP_IF(p(181, s), BOOST_PP_WHILE_181, s BOOST_PP_TUPLE_EAT_3)(p, o, o(181, s))
# define BOOST_PP_WHILE_181_I(p, o, s) BOOST_PP_IF(p(182, s), BOOST_PP_WHILE_182, s BOOST_PP_TUPLE_EAT_3)(p, o, o(182, s))
# define BOOST_PP_WHILE_182_I(p, o, s) BOOST_PP_IF(p(183, s), BOOST_PP_WHILE_183, s BOOST_PP_TUPLE_EAT_3)(p, o, o(183, s))
# define BOOST_PP_WHILE_183_I(p, o, s) BOOST_PP_IF(p(184, s), BOOST_PP_WHILE_184, s BOOST_PP_TUPLE_EAT_3)(p, o, o(184, s))
# define BOOST_PP_WHILE_184_I(p, o, s) BOOST_PP_IF(p(185, s), BOOST_PP_WHILE_185, s BOOST_PP_TUPLE_EAT_3)(p, o, o(185, s))
# define BOOST_PP_WHILE_185_I(p, o, s) BOOST_PP_IF(p(186, s), BOOST_PP_WHILE_186, s BOOST_PP_TUPLE_EAT_3)(p, o, o(186, s))
# define BOOST_PP_WHILE_186_I(p, o, s) BOOST_PP_IF(p(187, s), BOOST_PP_WHILE_187, s BOOST_PP_TUPLE_EAT_3)(p, o, o(187, s))
# define BOOST_PP_WHILE_187_I(p, o, s) BOOST_PP_IF(p(188, s), BOOST_PP_WHILE_188, s BOOST_PP_TUPLE_EAT_3)(p, o, o(188, s))
# define BOOST_PP_WHILE_188_I(p, o, s) BOOST_PP_IF(p(189, s), BOOST_PP_WHILE_189, s BOOST_PP_TUPLE_EAT_3)(p, o, o(189, s))
# define BOOST_PP_WHILE_189_I(p, o, s) BOOST_PP_IF(p(190, s), BOOST_PP_WHILE_190, s BOOST_PP_TUPLE_EAT_3)(p, o, o(190, s))
# define BOOST_PP_WHILE_190_I(p, o, s) BOOST_PP_IF(p(191, s), BOOST_PP_WHILE_191, s BOOST_PP_TUPLE_EAT_3)(p, o, o(191, s))
# define BOOST_PP_WHILE_191_I(p, o, s) BOOST_PP_IF(p(192, s), BOOST_PP_WHILE_192, s BOOST_PP_TUPLE_EAT_3)(p, o, o(192, s))
# define BOOST_PP_WHILE_192_I(p, o, s) BOOST_PP_IF(p(193, s), BOOST_PP_WHILE_193, s BOOST_PP_TUPLE_EAT_3)(p, o, o(193, s))
# define BOOST_PP_WHILE_193_I(p, o, s) BOOST_PP_IF(p(194, s), BOOST_PP_WHILE_194, s BOOST_PP_TUPLE_EAT_3)(p, o, o(194, s))
# define BOOST_PP_WHILE_194_I(p, o, s) BOOST_PP_IF(p(195, s), BOOST_PP_WHILE_195, s BOOST_PP_TUPLE_EAT_3)(p, o, o(195, s))
# define BOOST_PP_WHILE_195_I(p, o, s) BOOST_PP_IF(p(196, s), BOOST_PP_WHILE_196, s BOOST_PP_TUPLE_EAT_3)(p, o, o(196, s))
# define BOOST_PP_WHILE_196_I(p, o, s) BOOST_PP_IF(p(197, s), BOOST_PP_WHILE_197, s BOOST_PP_TUPLE_EAT_3)(p, o, o(197, s))
# define BOOST_PP_WHILE_197_I(p, o, s) BOOST_PP_IF(p(198, s), BOOST_PP_WHILE_198, s BOOST_PP_TUPLE_EAT_3)(p, o, o(198, s))
# define BOOST_PP_WHILE_198_I(p, o, s) BOOST_PP_IF(p(199, s), BOOST_PP_WHILE_199, s BOOST_PP_TUPLE_EAT_3)(p, o, o(199, s))
# define BOOST_PP_WHILE_199_I(p, o, s) BOOST_PP_IF(p(200, s), BOOST_PP_WHILE_200, s BOOST_PP_TUPLE_EAT_3)(p, o, o(200, s))
# define BOOST_PP_WHILE_200_I(p, o, s) BOOST_PP_IF(p(201, s), BOOST_PP_WHILE_201, s BOOST_PP_TUPLE_EAT_3)(p, o, o(201, s))
# define BOOST_PP_WHILE_201_I(p, o, s) BOOST_PP_IF(p(202, s), BOOST_PP_WHILE_202, s BOOST_PP_TUPLE_EAT_3)(p, o, o(202, s))
# define BOOST_PP_WHILE_202_I(p, o, s) BOOST_PP_IF(p(203, s), BOOST_PP_WHILE_203, s BOOST_PP_TUPLE_EAT_3)(p, o, o(203, s))
# define BOOST_PP_WHILE_203_I(p, o, s) BOOST_PP_IF(p(204, s), BOOST_PP_WHILE_204, s BOOST_PP_TUPLE_EAT_3)(p, o, o(204, s))
# define BOOST_PP_WHILE_204_I(p, o, s) BOOST_PP_IF(p(205, s), BOOST_PP_WHILE_205, s BOOST_PP_TUPLE_EAT_3)(p, o, o(205, s))
# define BOOST_PP_WHILE_205_I(p, o, s) BOOST_PP_IF(p(206, s), BOOST_PP_WHILE_206, s BOOST_PP_TUPLE_EAT_3)(p, o, o(206, s))
# define BOOST_PP_WHILE_206_I(p, o, s) BOOST_PP_IF(p(207, s), BOOST_PP_WHILE_207, s BOOST_PP_TUPLE_EAT_3)(p, o, o(207, s))
# define BOOST_PP_WHILE_207_I(p, o, s) BOOST_PP_IF(p(208, s), BOOST_PP_WHILE_208, s BOOST_PP_TUPLE_EAT_3)(p, o, o(208, s))
# define BOOST_PP_WHILE_208_I(p, o, s) BOOST_PP_IF(p(209, s), BOOST_PP_WHILE_209, s BOOST_PP_TUPLE_EAT_3)(p, o, o(209, s))
# define BOOST_PP_WHILE_209_I(p, o, s) BOOST_PP_IF(p(210, s), BOOST_PP_WHILE_210, s BOOST_PP_TUPLE_EAT_3)(p, o, o(210, s))
# define BOOST_PP_WHILE_210_I(p, o, s) BOOST_PP_IF(p(211, s), BOOST_PP_WHILE_211, s BOOST_PP_TUPLE_EAT_3)(p, o, o(211, s))
# define BOOST_PP_WHILE_211_I(p, o, s) BOOST_PP_IF(p(212, s), BOOST_PP_WHILE_212, s BOOST_PP_TUPLE_EAT_3)(p, o, o(212, s))
# define BOOST_PP_WHILE_212_I(p, o, s) BOOST_PP_IF(p(213, s), BOOST_PP_WHILE_213, s BOOST_PP_TUPLE_EAT_3)(p, o, o(213, s))
# define BOOST_PP_WHILE_213_I(p, o, s) BOOST_PP_IF(p(214, s), BOOST_PP_WHILE_214, s BOOST_PP_TUPLE_EAT_3)(p, o, o(214, s))
# define BOOST_PP_WHILE_214_I(p, o, s) BOOST_PP_IF(p(215, s), BOOST_PP_WHILE_215, s BOOST_PP_TUPLE_EAT_3)(p, o, o(215, s))
# define BOOST_PP_WHILE_215_I(p, o, s) BOOST_PP_IF(p(216, s), BOOST_PP_WHILE_216, s BOOST_PP_TUPLE_EAT_3)(p, o, o(216, s))
# define BOOST_PP_WHILE_216_I(p, o, s) BOOST_PP_IF(p(217, s), BOOST_PP_WHILE_217, s BOOST_PP_TUPLE_EAT_3)(p, o, o(217, s))
# define BOOST_PP_WHILE_217_I(p, o, s) BOOST_PP_IF(p(218, s), BOOST_PP_WHILE_218, s BOOST_PP_TUPLE_EAT_3)(p, o, o(218, s))
# define BOOST_PP_WHILE_218_I(p, o, s) BOOST_PP_IF(p(219, s), BOOST_PP_WHILE_219, s BOOST_PP_TUPLE_EAT_3)(p, o, o(219, s))
# define BOOST_PP_WHILE_219_I(p, o, s) BOOST_PP_IF(p(220, s), BOOST_PP_WHILE_220, s BOOST_PP_TUPLE_EAT_3)(p, o, o(220, s))
# define BOOST_PP_WHILE_220_I(p, o, s) BOOST_PP_IF(p(221, s), BOOST_PP_WHILE_221, s BOOST_PP_TUPLE_EAT_3)(p, o, o(221, s))
# define BOOST_PP_WHILE_221_I(p, o, s) BOOST_PP_IF(p(222, s), BOOST_PP_WHILE_222, s BOOST_PP_TUPLE_EAT_3)(p, o, o(222, s))
# define BOOST_PP_WHILE_222_I(p, o, s) BOOST_PP_IF(p(223, s), BOOST_PP_WHILE_223, s BOOST_PP_TUPLE_EAT_3)(p, o, o(223, s))
# define BOOST_PP_WHILE_223_I(p, o, s) BOOST_PP_IF(p(224, s), BOOST_PP_WHILE_224, s BOOST_PP_TUPLE_EAT_3)(p, o, o(224, s))
# define BOOST_PP_WHILE_224_I(p, o, s) BOOST_PP_IF(p(225, s), BOOST_PP_WHILE_225, s BOOST_PP_TUPLE_EAT_3)(p, o, o(225, s))
# define BOOST_PP_WHILE_225_I(p, o, s) BOOST_PP_IF(p(226, s), BOOST_PP_WHILE_226, s BOOST_PP_TUPLE_EAT_3)(p, o, o(226, s))
# define BOOST_PP_WHILE_226_I(p, o, s) BOOST_PP_IF(p(227, s), BOOST_PP_WHILE_227, s BOOST_PP_TUPLE_EAT_3)(p, o, o(227, s))
# define BOOST_PP_WHILE_227_I(p, o, s) BOOST_PP_IF(p(228, s), BOOST_PP_WHILE_228, s BOOST_PP_TUPLE_EAT_3)(p, o, o(228, s))
# define BOOST_PP_WHILE_228_I(p, o, s) BOOST_PP_IF(p(229, s), BOOST_PP_WHILE_229, s BOOST_PP_TUPLE_EAT_3)(p, o, o(229, s))
# define BOOST_PP_WHILE_229_I(p, o, s) BOOST_PP_IF(p(230, s), BOOST_PP_WHILE_230, s BOOST_PP_TUPLE_EAT_3)(p, o, o(230, s))
# define BOOST_PP_WHILE_230_I(p, o, s) BOOST_PP_IF(p(231, s), BOOST_PP_WHILE_231, s BOOST_PP_TUPLE_EAT_3)(p, o, o(231, s))
# define BOOST_PP_WHILE_231_I(p, o, s) BOOST_PP_IF(p(232, s), BOOST_PP_WHILE_232, s BOOST_PP_TUPLE_EAT_3)(p, o, o(232, s))
# define BOOST_PP_WHILE_232_I(p, o, s) BOOST_PP_IF(p(233, s), BOOST_PP_WHILE_233, s BOOST_PP_TUPLE_EAT_3)(p, o, o(233, s))
# define BOOST_PP_WHILE_233_I(p, o, s) BOOST_PP_IF(p(234, s), BOOST_PP_WHILE_234, s BOOST_PP_TUPLE_EAT_3)(p, o, o(234, s))
# define BOOST_PP_WHILE_234_I(p, o, s) BOOST_PP_IF(p(235, s), BOOST_PP_WHILE_235, s BOOST_PP_TUPLE_EAT_3)(p, o, o(235, s))
# define BOOST_PP_WHILE_235_I(p, o, s) BOOST_PP_IF(p(236, s), BOOST_PP_WHILE_236, s BOOST_PP_TUPLE_EAT_3)(p, o, o(236, s))
# define BOOST_PP_WHILE_236_I(p, o, s) BOOST_PP_IF(p(237, s), BOOST_PP_WHILE_237, s BOOST_PP_TUPLE_EAT_3)(p, o, o(237, s))
# define BOOST_PP_WHILE_237_I(p, o, s) BOOST_PP_IF(p(238, s), BOOST_PP_WHILE_238, s BOOST_PP_TUPLE_EAT_3)(p, o, o(238, s))
# define BOOST_PP_WHILE_238_I(p, o, s) BOOST_PP_IF(p(239, s), BOOST_PP_WHILE_239, s BOOST_PP_TUPLE_EAT_3)(p, o, o(239, s))
# define BOOST_PP_WHILE_239_I(p, o, s) BOOST_PP_IF(p(240, s), BOOST_PP_WHILE_240, s BOOST_PP_TUPLE_EAT_3)(p, o, o(240, s))
# define BOOST_PP_WHILE_240_I(p, o, s) BOOST_PP_IF(p(241, s), BOOST_PP_WHILE_241, s BOOST_PP_TUPLE_EAT_3)(p, o, o(241, s))
# define BOOST_PP_WHILE_241_I(p, o, s) BOOST_PP_IF(p(242, s), BOOST_PP_WHILE_242, s BOOST_PP_TUPLE_EAT_3)(p, o, o(242, s))
# define BOOST_PP_WHILE_242_I(p, o, s) BOOST_PP_IF(p(243, s), BOOST_PP_WHILE_243, s BOOST_PP_TUPLE_EAT_3)(p, o, o(243, s))
# define BOOST_PP_WHILE_243_I(p, o, s) BOOST_PP_IF(p(244, s), BOOST_PP_WHILE_244, s BOOST_PP_TUPLE_EAT_3)(p, o, o(244, s))
# define BOOST_PP_WHILE_244_I(p, o, s) BOOST_PP_IF(p(245, s), BOOST_PP_WHILE_245, s BOOST_PP_TUPLE_EAT_3)(p, o, o(245, s))
# define BOOST_PP_WHILE_245_I(p, o, s) BOOST_PP_IF(p(246, s), BOOST_PP_WHILE_246, s BOOST_PP_TUPLE_EAT_3)(p, o, o(246, s))
# define BOOST_PP_WHILE_246_I(p, o, s) BOOST_PP_IF(p(247, s), BOOST_PP_WHILE_247, s BOOST_PP_TUPLE_EAT_3)(p, o, o(247, s))
# define BOOST_PP_WHILE_247_I(p, o, s) BOOST_PP_IF(p(248, s), BOOST_PP_WHILE_248, s BOOST_PP_TUPLE_EAT_3)(p, o, o(248, s))
# define BOOST_PP_WHILE_248_I(p, o, s) BOOST_PP_IF(p(249, s), BOOST_PP_WHILE_249, s BOOST_PP_TUPLE_EAT_3)(p, o, o(249, s))
# define BOOST_PP_WHILE_249_I(p, o, s) BOOST_PP_IF(p(250, s), BOOST_PP_WHILE_250, s BOOST_PP_TUPLE_EAT_3)(p, o, o(250, s))
# define BOOST_PP_WHILE_250_I(p, o, s) BOOST_PP_IF(p(251, s), BOOST_PP_WHILE_251, s BOOST_PP_TUPLE_EAT_3)(p, o, o(251, s))
# define BOOST_PP_WHILE_251_I(p, o, s) BOOST_PP_IF(p(252, s), BOOST_PP_WHILE_252, s BOOST_PP_TUPLE_EAT_3)(p, o, o(252, s))
# define BOOST_PP_WHILE_252_I(p, o, s) BOOST_PP_IF(p(253, s), BOOST_PP_WHILE_253, s BOOST_PP_TUPLE_EAT_3)(p, o, o(253, s))
# define BOOST_PP_WHILE_253_I(p, o, s) BOOST_PP_IF(p(254, s), BOOST_PP_WHILE_254, s BOOST_PP_TUPLE_EAT_3)(p, o, o(254, s))
# define BOOST_PP_WHILE_254_I(p, o, s) BOOST_PP_IF(p(255, s), BOOST_PP_WHILE_255, s BOOST_PP_TUPLE_EAT_3)(p, o, o(255, s))
# define BOOST_PP_WHILE_255_I(p, o, s) BOOST_PP_IF(p(256, s), BOOST_PP_WHILE_256, s BOOST_PP_TUPLE_EAT_3)(p, o, o(256, s))
# define BOOST_PP_WHILE_256_I(p, o, s) BOOST_PP_IF(p(257, s), BOOST_PP_WHILE_257, s BOOST_PP_TUPLE_EAT_3)(p, o, o(257, s))
#
# endif

View File

@ -0,0 +1,532 @@
# /* Copyright (C) 2001
# * Housemarque Oy
# * http://www.housemarque.com
# *
# * 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)
# */
#
# /* Revised by Paul Mensonides (2002) */
# /* Revised by Edward Diener (2020) */
#
# /* See http://www.boost.org for most recent version. */
#
# ifndef BOOST_PREPROCESSOR_CONTROL_DETAIL_EDG_WHILE_512_HPP
# define BOOST_PREPROCESSOR_CONTROL_DETAIL_EDG_WHILE_512_HPP
#
# define BOOST_PP_WHILE_257(p, o, s) BOOST_PP_WHILE_257_I(p, o, s)
# define BOOST_PP_WHILE_258(p, o, s) BOOST_PP_WHILE_258_I(p, o, s)
# define BOOST_PP_WHILE_259(p, o, s) BOOST_PP_WHILE_259_I(p, o, s)
# define BOOST_PP_WHILE_260(p, o, s) BOOST_PP_WHILE_260_I(p, o, s)
# define BOOST_PP_WHILE_261(p, o, s) BOOST_PP_WHILE_261_I(p, o, s)
# define BOOST_PP_WHILE_262(p, o, s) BOOST_PP_WHILE_262_I(p, o, s)
# define BOOST_PP_WHILE_263(p, o, s) BOOST_PP_WHILE_263_I(p, o, s)
# define BOOST_PP_WHILE_264(p, o, s) BOOST_PP_WHILE_264_I(p, o, s)
# define BOOST_PP_WHILE_265(p, o, s) BOOST_PP_WHILE_265_I(p, o, s)
# define BOOST_PP_WHILE_266(p, o, s) BOOST_PP_WHILE_266_I(p, o, s)
# define BOOST_PP_WHILE_267(p, o, s) BOOST_PP_WHILE_267_I(p, o, s)
# define BOOST_PP_WHILE_268(p, o, s) BOOST_PP_WHILE_268_I(p, o, s)
# define BOOST_PP_WHILE_269(p, o, s) BOOST_PP_WHILE_269_I(p, o, s)
# define BOOST_PP_WHILE_270(p, o, s) BOOST_PP_WHILE_270_I(p, o, s)
# define BOOST_PP_WHILE_271(p, o, s) BOOST_PP_WHILE_271_I(p, o, s)
# define BOOST_PP_WHILE_272(p, o, s) BOOST_PP_WHILE_272_I(p, o, s)
# define BOOST_PP_WHILE_273(p, o, s) BOOST_PP_WHILE_273_I(p, o, s)
# define BOOST_PP_WHILE_274(p, o, s) BOOST_PP_WHILE_274_I(p, o, s)
# define BOOST_PP_WHILE_275(p, o, s) BOOST_PP_WHILE_275_I(p, o, s)
# define BOOST_PP_WHILE_276(p, o, s) BOOST_PP_WHILE_276_I(p, o, s)
# define BOOST_PP_WHILE_277(p, o, s) BOOST_PP_WHILE_277_I(p, o, s)
# define BOOST_PP_WHILE_278(p, o, s) BOOST_PP_WHILE_278_I(p, o, s)
# define BOOST_PP_WHILE_279(p, o, s) BOOST_PP_WHILE_279_I(p, o, s)
# define BOOST_PP_WHILE_280(p, o, s) BOOST_PP_WHILE_280_I(p, o, s)
# define BOOST_PP_WHILE_281(p, o, s) BOOST_PP_WHILE_281_I(p, o, s)
# define BOOST_PP_WHILE_282(p, o, s) BOOST_PP_WHILE_282_I(p, o, s)
# define BOOST_PP_WHILE_283(p, o, s) BOOST_PP_WHILE_283_I(p, o, s)
# define BOOST_PP_WHILE_284(p, o, s) BOOST_PP_WHILE_284_I(p, o, s)
# define BOOST_PP_WHILE_285(p, o, s) BOOST_PP_WHILE_285_I(p, o, s)
# define BOOST_PP_WHILE_286(p, o, s) BOOST_PP_WHILE_286_I(p, o, s)
# define BOOST_PP_WHILE_287(p, o, s) BOOST_PP_WHILE_287_I(p, o, s)
# define BOOST_PP_WHILE_288(p, o, s) BOOST_PP_WHILE_288_I(p, o, s)
# define BOOST_PP_WHILE_289(p, o, s) BOOST_PP_WHILE_289_I(p, o, s)
# define BOOST_PP_WHILE_290(p, o, s) BOOST_PP_WHILE_290_I(p, o, s)
# define BOOST_PP_WHILE_291(p, o, s) BOOST_PP_WHILE_291_I(p, o, s)
# define BOOST_PP_WHILE_292(p, o, s) BOOST_PP_WHILE_292_I(p, o, s)
# define BOOST_PP_WHILE_293(p, o, s) BOOST_PP_WHILE_293_I(p, o, s)
# define BOOST_PP_WHILE_294(p, o, s) BOOST_PP_WHILE_294_I(p, o, s)
# define BOOST_PP_WHILE_295(p, o, s) BOOST_PP_WHILE_295_I(p, o, s)
# define BOOST_PP_WHILE_296(p, o, s) BOOST_PP_WHILE_296_I(p, o, s)
# define BOOST_PP_WHILE_297(p, o, s) BOOST_PP_WHILE_297_I(p, o, s)
# define BOOST_PP_WHILE_298(p, o, s) BOOST_PP_WHILE_298_I(p, o, s)
# define BOOST_PP_WHILE_299(p, o, s) BOOST_PP_WHILE_299_I(p, o, s)
# define BOOST_PP_WHILE_300(p, o, s) BOOST_PP_WHILE_300_I(p, o, s)
# define BOOST_PP_WHILE_301(p, o, s) BOOST_PP_WHILE_301_I(p, o, s)
# define BOOST_PP_WHILE_302(p, o, s) BOOST_PP_WHILE_302_I(p, o, s)
# define BOOST_PP_WHILE_303(p, o, s) BOOST_PP_WHILE_303_I(p, o, s)
# define BOOST_PP_WHILE_304(p, o, s) BOOST_PP_WHILE_304_I(p, o, s)
# define BOOST_PP_WHILE_305(p, o, s) BOOST_PP_WHILE_305_I(p, o, s)
# define BOOST_PP_WHILE_306(p, o, s) BOOST_PP_WHILE_306_I(p, o, s)
# define BOOST_PP_WHILE_307(p, o, s) BOOST_PP_WHILE_307_I(p, o, s)
# define BOOST_PP_WHILE_308(p, o, s) BOOST_PP_WHILE_308_I(p, o, s)
# define BOOST_PP_WHILE_309(p, o, s) BOOST_PP_WHILE_309_I(p, o, s)
# define BOOST_PP_WHILE_310(p, o, s) BOOST_PP_WHILE_310_I(p, o, s)
# define BOOST_PP_WHILE_311(p, o, s) BOOST_PP_WHILE_311_I(p, o, s)
# define BOOST_PP_WHILE_312(p, o, s) BOOST_PP_WHILE_312_I(p, o, s)
# define BOOST_PP_WHILE_313(p, o, s) BOOST_PP_WHILE_313_I(p, o, s)
# define BOOST_PP_WHILE_314(p, o, s) BOOST_PP_WHILE_314_I(p, o, s)
# define BOOST_PP_WHILE_315(p, o, s) BOOST_PP_WHILE_315_I(p, o, s)
# define BOOST_PP_WHILE_316(p, o, s) BOOST_PP_WHILE_316_I(p, o, s)
# define BOOST_PP_WHILE_317(p, o, s) BOOST_PP_WHILE_317_I(p, o, s)
# define BOOST_PP_WHILE_318(p, o, s) BOOST_PP_WHILE_318_I(p, o, s)
# define BOOST_PP_WHILE_319(p, o, s) BOOST_PP_WHILE_319_I(p, o, s)
# define BOOST_PP_WHILE_320(p, o, s) BOOST_PP_WHILE_320_I(p, o, s)
# define BOOST_PP_WHILE_321(p, o, s) BOOST_PP_WHILE_321_I(p, o, s)
# define BOOST_PP_WHILE_322(p, o, s) BOOST_PP_WHILE_322_I(p, o, s)
# define BOOST_PP_WHILE_323(p, o, s) BOOST_PP_WHILE_323_I(p, o, s)
# define BOOST_PP_WHILE_324(p, o, s) BOOST_PP_WHILE_324_I(p, o, s)
# define BOOST_PP_WHILE_325(p, o, s) BOOST_PP_WHILE_325_I(p, o, s)
# define BOOST_PP_WHILE_326(p, o, s) BOOST_PP_WHILE_326_I(p, o, s)
# define BOOST_PP_WHILE_327(p, o, s) BOOST_PP_WHILE_327_I(p, o, s)
# define BOOST_PP_WHILE_328(p, o, s) BOOST_PP_WHILE_328_I(p, o, s)
# define BOOST_PP_WHILE_329(p, o, s) BOOST_PP_WHILE_329_I(p, o, s)
# define BOOST_PP_WHILE_330(p, o, s) BOOST_PP_WHILE_330_I(p, o, s)
# define BOOST_PP_WHILE_331(p, o, s) BOOST_PP_WHILE_331_I(p, o, s)
# define BOOST_PP_WHILE_332(p, o, s) BOOST_PP_WHILE_332_I(p, o, s)
# define BOOST_PP_WHILE_333(p, o, s) BOOST_PP_WHILE_333_I(p, o, s)
# define BOOST_PP_WHILE_334(p, o, s) BOOST_PP_WHILE_334_I(p, o, s)
# define BOOST_PP_WHILE_335(p, o, s) BOOST_PP_WHILE_335_I(p, o, s)
# define BOOST_PP_WHILE_336(p, o, s) BOOST_PP_WHILE_336_I(p, o, s)
# define BOOST_PP_WHILE_337(p, o, s) BOOST_PP_WHILE_337_I(p, o, s)
# define BOOST_PP_WHILE_338(p, o, s) BOOST_PP_WHILE_338_I(p, o, s)
# define BOOST_PP_WHILE_339(p, o, s) BOOST_PP_WHILE_339_I(p, o, s)
# define BOOST_PP_WHILE_340(p, o, s) BOOST_PP_WHILE_340_I(p, o, s)
# define BOOST_PP_WHILE_341(p, o, s) BOOST_PP_WHILE_341_I(p, o, s)
# define BOOST_PP_WHILE_342(p, o, s) BOOST_PP_WHILE_342_I(p, o, s)
# define BOOST_PP_WHILE_343(p, o, s) BOOST_PP_WHILE_343_I(p, o, s)
# define BOOST_PP_WHILE_344(p, o, s) BOOST_PP_WHILE_344_I(p, o, s)
# define BOOST_PP_WHILE_345(p, o, s) BOOST_PP_WHILE_345_I(p, o, s)
# define BOOST_PP_WHILE_346(p, o, s) BOOST_PP_WHILE_346_I(p, o, s)
# define BOOST_PP_WHILE_347(p, o, s) BOOST_PP_WHILE_347_I(p, o, s)
# define BOOST_PP_WHILE_348(p, o, s) BOOST_PP_WHILE_348_I(p, o, s)
# define BOOST_PP_WHILE_349(p, o, s) BOOST_PP_WHILE_349_I(p, o, s)
# define BOOST_PP_WHILE_350(p, o, s) BOOST_PP_WHILE_350_I(p, o, s)
# define BOOST_PP_WHILE_351(p, o, s) BOOST_PP_WHILE_351_I(p, o, s)
# define BOOST_PP_WHILE_352(p, o, s) BOOST_PP_WHILE_352_I(p, o, s)
# define BOOST_PP_WHILE_353(p, o, s) BOOST_PP_WHILE_353_I(p, o, s)
# define BOOST_PP_WHILE_354(p, o, s) BOOST_PP_WHILE_354_I(p, o, s)
# define BOOST_PP_WHILE_355(p, o, s) BOOST_PP_WHILE_355_I(p, o, s)
# define BOOST_PP_WHILE_356(p, o, s) BOOST_PP_WHILE_356_I(p, o, s)
# define BOOST_PP_WHILE_357(p, o, s) BOOST_PP_WHILE_357_I(p, o, s)
# define BOOST_PP_WHILE_358(p, o, s) BOOST_PP_WHILE_358_I(p, o, s)
# define BOOST_PP_WHILE_359(p, o, s) BOOST_PP_WHILE_359_I(p, o, s)
# define BOOST_PP_WHILE_360(p, o, s) BOOST_PP_WHILE_360_I(p, o, s)
# define BOOST_PP_WHILE_361(p, o, s) BOOST_PP_WHILE_361_I(p, o, s)
# define BOOST_PP_WHILE_362(p, o, s) BOOST_PP_WHILE_362_I(p, o, s)
# define BOOST_PP_WHILE_363(p, o, s) BOOST_PP_WHILE_363_I(p, o, s)
# define BOOST_PP_WHILE_364(p, o, s) BOOST_PP_WHILE_364_I(p, o, s)
# define BOOST_PP_WHILE_365(p, o, s) BOOST_PP_WHILE_365_I(p, o, s)
# define BOOST_PP_WHILE_366(p, o, s) BOOST_PP_WHILE_366_I(p, o, s)
# define BOOST_PP_WHILE_367(p, o, s) BOOST_PP_WHILE_367_I(p, o, s)
# define BOOST_PP_WHILE_368(p, o, s) BOOST_PP_WHILE_368_I(p, o, s)
# define BOOST_PP_WHILE_369(p, o, s) BOOST_PP_WHILE_369_I(p, o, s)
# define BOOST_PP_WHILE_370(p, o, s) BOOST_PP_WHILE_370_I(p, o, s)
# define BOOST_PP_WHILE_371(p, o, s) BOOST_PP_WHILE_371_I(p, o, s)
# define BOOST_PP_WHILE_372(p, o, s) BOOST_PP_WHILE_372_I(p, o, s)
# define BOOST_PP_WHILE_373(p, o, s) BOOST_PP_WHILE_373_I(p, o, s)
# define BOOST_PP_WHILE_374(p, o, s) BOOST_PP_WHILE_374_I(p, o, s)
# define BOOST_PP_WHILE_375(p, o, s) BOOST_PP_WHILE_375_I(p, o, s)
# define BOOST_PP_WHILE_376(p, o, s) BOOST_PP_WHILE_376_I(p, o, s)
# define BOOST_PP_WHILE_377(p, o, s) BOOST_PP_WHILE_377_I(p, o, s)
# define BOOST_PP_WHILE_378(p, o, s) BOOST_PP_WHILE_378_I(p, o, s)
# define BOOST_PP_WHILE_379(p, o, s) BOOST_PP_WHILE_379_I(p, o, s)
# define BOOST_PP_WHILE_380(p, o, s) BOOST_PP_WHILE_380_I(p, o, s)
# define BOOST_PP_WHILE_381(p, o, s) BOOST_PP_WHILE_381_I(p, o, s)
# define BOOST_PP_WHILE_382(p, o, s) BOOST_PP_WHILE_382_I(p, o, s)
# define BOOST_PP_WHILE_383(p, o, s) BOOST_PP_WHILE_383_I(p, o, s)
# define BOOST_PP_WHILE_384(p, o, s) BOOST_PP_WHILE_384_I(p, o, s)
# define BOOST_PP_WHILE_385(p, o, s) BOOST_PP_WHILE_385_I(p, o, s)
# define BOOST_PP_WHILE_386(p, o, s) BOOST_PP_WHILE_386_I(p, o, s)
# define BOOST_PP_WHILE_387(p, o, s) BOOST_PP_WHILE_387_I(p, o, s)
# define BOOST_PP_WHILE_388(p, o, s) BOOST_PP_WHILE_388_I(p, o, s)
# define BOOST_PP_WHILE_389(p, o, s) BOOST_PP_WHILE_389_I(p, o, s)
# define BOOST_PP_WHILE_390(p, o, s) BOOST_PP_WHILE_390_I(p, o, s)
# define BOOST_PP_WHILE_391(p, o, s) BOOST_PP_WHILE_391_I(p, o, s)
# define BOOST_PP_WHILE_392(p, o, s) BOOST_PP_WHILE_392_I(p, o, s)
# define BOOST_PP_WHILE_393(p, o, s) BOOST_PP_WHILE_393_I(p, o, s)
# define BOOST_PP_WHILE_394(p, o, s) BOOST_PP_WHILE_394_I(p, o, s)
# define BOOST_PP_WHILE_395(p, o, s) BOOST_PP_WHILE_395_I(p, o, s)
# define BOOST_PP_WHILE_396(p, o, s) BOOST_PP_WHILE_396_I(p, o, s)
# define BOOST_PP_WHILE_397(p, o, s) BOOST_PP_WHILE_397_I(p, o, s)
# define BOOST_PP_WHILE_398(p, o, s) BOOST_PP_WHILE_398_I(p, o, s)
# define BOOST_PP_WHILE_399(p, o, s) BOOST_PP_WHILE_399_I(p, o, s)
# define BOOST_PP_WHILE_400(p, o, s) BOOST_PP_WHILE_400_I(p, o, s)
# define BOOST_PP_WHILE_401(p, o, s) BOOST_PP_WHILE_401_I(p, o, s)
# define BOOST_PP_WHILE_402(p, o, s) BOOST_PP_WHILE_402_I(p, o, s)
# define BOOST_PP_WHILE_403(p, o, s) BOOST_PP_WHILE_403_I(p, o, s)
# define BOOST_PP_WHILE_404(p, o, s) BOOST_PP_WHILE_404_I(p, o, s)
# define BOOST_PP_WHILE_405(p, o, s) BOOST_PP_WHILE_405_I(p, o, s)
# define BOOST_PP_WHILE_406(p, o, s) BOOST_PP_WHILE_406_I(p, o, s)
# define BOOST_PP_WHILE_407(p, o, s) BOOST_PP_WHILE_407_I(p, o, s)
# define BOOST_PP_WHILE_408(p, o, s) BOOST_PP_WHILE_408_I(p, o, s)
# define BOOST_PP_WHILE_409(p, o, s) BOOST_PP_WHILE_409_I(p, o, s)
# define BOOST_PP_WHILE_410(p, o, s) BOOST_PP_WHILE_410_I(p, o, s)
# define BOOST_PP_WHILE_411(p, o, s) BOOST_PP_WHILE_411_I(p, o, s)
# define BOOST_PP_WHILE_412(p, o, s) BOOST_PP_WHILE_412_I(p, o, s)
# define BOOST_PP_WHILE_413(p, o, s) BOOST_PP_WHILE_413_I(p, o, s)
# define BOOST_PP_WHILE_414(p, o, s) BOOST_PP_WHILE_414_I(p, o, s)
# define BOOST_PP_WHILE_415(p, o, s) BOOST_PP_WHILE_415_I(p, o, s)
# define BOOST_PP_WHILE_416(p, o, s) BOOST_PP_WHILE_416_I(p, o, s)
# define BOOST_PP_WHILE_417(p, o, s) BOOST_PP_WHILE_417_I(p, o, s)
# define BOOST_PP_WHILE_418(p, o, s) BOOST_PP_WHILE_418_I(p, o, s)
# define BOOST_PP_WHILE_419(p, o, s) BOOST_PP_WHILE_419_I(p, o, s)
# define BOOST_PP_WHILE_420(p, o, s) BOOST_PP_WHILE_420_I(p, o, s)
# define BOOST_PP_WHILE_421(p, o, s) BOOST_PP_WHILE_421_I(p, o, s)
# define BOOST_PP_WHILE_422(p, o, s) BOOST_PP_WHILE_422_I(p, o, s)
# define BOOST_PP_WHILE_423(p, o, s) BOOST_PP_WHILE_423_I(p, o, s)
# define BOOST_PP_WHILE_424(p, o, s) BOOST_PP_WHILE_424_I(p, o, s)
# define BOOST_PP_WHILE_425(p, o, s) BOOST_PP_WHILE_425_I(p, o, s)
# define BOOST_PP_WHILE_426(p, o, s) BOOST_PP_WHILE_426_I(p, o, s)
# define BOOST_PP_WHILE_427(p, o, s) BOOST_PP_WHILE_427_I(p, o, s)
# define BOOST_PP_WHILE_428(p, o, s) BOOST_PP_WHILE_428_I(p, o, s)
# define BOOST_PP_WHILE_429(p, o, s) BOOST_PP_WHILE_429_I(p, o, s)
# define BOOST_PP_WHILE_430(p, o, s) BOOST_PP_WHILE_430_I(p, o, s)
# define BOOST_PP_WHILE_431(p, o, s) BOOST_PP_WHILE_431_I(p, o, s)
# define BOOST_PP_WHILE_432(p, o, s) BOOST_PP_WHILE_432_I(p, o, s)
# define BOOST_PP_WHILE_433(p, o, s) BOOST_PP_WHILE_433_I(p, o, s)
# define BOOST_PP_WHILE_434(p, o, s) BOOST_PP_WHILE_434_I(p, o, s)
# define BOOST_PP_WHILE_435(p, o, s) BOOST_PP_WHILE_435_I(p, o, s)
# define BOOST_PP_WHILE_436(p, o, s) BOOST_PP_WHILE_436_I(p, o, s)
# define BOOST_PP_WHILE_437(p, o, s) BOOST_PP_WHILE_437_I(p, o, s)
# define BOOST_PP_WHILE_438(p, o, s) BOOST_PP_WHILE_438_I(p, o, s)
# define BOOST_PP_WHILE_439(p, o, s) BOOST_PP_WHILE_439_I(p, o, s)
# define BOOST_PP_WHILE_440(p, o, s) BOOST_PP_WHILE_440_I(p, o, s)
# define BOOST_PP_WHILE_441(p, o, s) BOOST_PP_WHILE_441_I(p, o, s)
# define BOOST_PP_WHILE_442(p, o, s) BOOST_PP_WHILE_442_I(p, o, s)
# define BOOST_PP_WHILE_443(p, o, s) BOOST_PP_WHILE_443_I(p, o, s)
# define BOOST_PP_WHILE_444(p, o, s) BOOST_PP_WHILE_444_I(p, o, s)
# define BOOST_PP_WHILE_445(p, o, s) BOOST_PP_WHILE_445_I(p, o, s)
# define BOOST_PP_WHILE_446(p, o, s) BOOST_PP_WHILE_446_I(p, o, s)
# define BOOST_PP_WHILE_447(p, o, s) BOOST_PP_WHILE_447_I(p, o, s)
# define BOOST_PP_WHILE_448(p, o, s) BOOST_PP_WHILE_448_I(p, o, s)
# define BOOST_PP_WHILE_449(p, o, s) BOOST_PP_WHILE_449_I(p, o, s)
# define BOOST_PP_WHILE_450(p, o, s) BOOST_PP_WHILE_450_I(p, o, s)
# define BOOST_PP_WHILE_451(p, o, s) BOOST_PP_WHILE_451_I(p, o, s)
# define BOOST_PP_WHILE_452(p, o, s) BOOST_PP_WHILE_452_I(p, o, s)
# define BOOST_PP_WHILE_453(p, o, s) BOOST_PP_WHILE_453_I(p, o, s)
# define BOOST_PP_WHILE_454(p, o, s) BOOST_PP_WHILE_454_I(p, o, s)
# define BOOST_PP_WHILE_455(p, o, s) BOOST_PP_WHILE_455_I(p, o, s)
# define BOOST_PP_WHILE_456(p, o, s) BOOST_PP_WHILE_456_I(p, o, s)
# define BOOST_PP_WHILE_457(p, o, s) BOOST_PP_WHILE_457_I(p, o, s)
# define BOOST_PP_WHILE_458(p, o, s) BOOST_PP_WHILE_458_I(p, o, s)
# define BOOST_PP_WHILE_459(p, o, s) BOOST_PP_WHILE_459_I(p, o, s)
# define BOOST_PP_WHILE_460(p, o, s) BOOST_PP_WHILE_460_I(p, o, s)
# define BOOST_PP_WHILE_461(p, o, s) BOOST_PP_WHILE_461_I(p, o, s)
# define BOOST_PP_WHILE_462(p, o, s) BOOST_PP_WHILE_462_I(p, o, s)
# define BOOST_PP_WHILE_463(p, o, s) BOOST_PP_WHILE_463_I(p, o, s)
# define BOOST_PP_WHILE_464(p, o, s) BOOST_PP_WHILE_464_I(p, o, s)
# define BOOST_PP_WHILE_465(p, o, s) BOOST_PP_WHILE_465_I(p, o, s)
# define BOOST_PP_WHILE_466(p, o, s) BOOST_PP_WHILE_466_I(p, o, s)
# define BOOST_PP_WHILE_467(p, o, s) BOOST_PP_WHILE_467_I(p, o, s)
# define BOOST_PP_WHILE_468(p, o, s) BOOST_PP_WHILE_468_I(p, o, s)
# define BOOST_PP_WHILE_469(p, o, s) BOOST_PP_WHILE_469_I(p, o, s)
# define BOOST_PP_WHILE_470(p, o, s) BOOST_PP_WHILE_470_I(p, o, s)
# define BOOST_PP_WHILE_471(p, o, s) BOOST_PP_WHILE_471_I(p, o, s)
# define BOOST_PP_WHILE_472(p, o, s) BOOST_PP_WHILE_472_I(p, o, s)
# define BOOST_PP_WHILE_473(p, o, s) BOOST_PP_WHILE_473_I(p, o, s)
# define BOOST_PP_WHILE_474(p, o, s) BOOST_PP_WHILE_474_I(p, o, s)
# define BOOST_PP_WHILE_475(p, o, s) BOOST_PP_WHILE_475_I(p, o, s)
# define BOOST_PP_WHILE_476(p, o, s) BOOST_PP_WHILE_476_I(p, o, s)
# define BOOST_PP_WHILE_477(p, o, s) BOOST_PP_WHILE_477_I(p, o, s)
# define BOOST_PP_WHILE_478(p, o, s) BOOST_PP_WHILE_478_I(p, o, s)
# define BOOST_PP_WHILE_479(p, o, s) BOOST_PP_WHILE_479_I(p, o, s)
# define BOOST_PP_WHILE_480(p, o, s) BOOST_PP_WHILE_480_I(p, o, s)
# define BOOST_PP_WHILE_481(p, o, s) BOOST_PP_WHILE_481_I(p, o, s)
# define BOOST_PP_WHILE_482(p, o, s) BOOST_PP_WHILE_482_I(p, o, s)
# define BOOST_PP_WHILE_483(p, o, s) BOOST_PP_WHILE_483_I(p, o, s)
# define BOOST_PP_WHILE_484(p, o, s) BOOST_PP_WHILE_484_I(p, o, s)
# define BOOST_PP_WHILE_485(p, o, s) BOOST_PP_WHILE_485_I(p, o, s)
# define BOOST_PP_WHILE_486(p, o, s) BOOST_PP_WHILE_486_I(p, o, s)
# define BOOST_PP_WHILE_487(p, o, s) BOOST_PP_WHILE_487_I(p, o, s)
# define BOOST_PP_WHILE_488(p, o, s) BOOST_PP_WHILE_488_I(p, o, s)
# define BOOST_PP_WHILE_489(p, o, s) BOOST_PP_WHILE_489_I(p, o, s)
# define BOOST_PP_WHILE_490(p, o, s) BOOST_PP_WHILE_490_I(p, o, s)
# define BOOST_PP_WHILE_491(p, o, s) BOOST_PP_WHILE_491_I(p, o, s)
# define BOOST_PP_WHILE_492(p, o, s) BOOST_PP_WHILE_492_I(p, o, s)
# define BOOST_PP_WHILE_493(p, o, s) BOOST_PP_WHILE_493_I(p, o, s)
# define BOOST_PP_WHILE_494(p, o, s) BOOST_PP_WHILE_494_I(p, o, s)
# define BOOST_PP_WHILE_495(p, o, s) BOOST_PP_WHILE_495_I(p, o, s)
# define BOOST_PP_WHILE_496(p, o, s) BOOST_PP_WHILE_496_I(p, o, s)
# define BOOST_PP_WHILE_497(p, o, s) BOOST_PP_WHILE_497_I(p, o, s)
# define BOOST_PP_WHILE_498(p, o, s) BOOST_PP_WHILE_498_I(p, o, s)
# define BOOST_PP_WHILE_499(p, o, s) BOOST_PP_WHILE_499_I(p, o, s)
# define BOOST_PP_WHILE_500(p, o, s) BOOST_PP_WHILE_500_I(p, o, s)
# define BOOST_PP_WHILE_501(p, o, s) BOOST_PP_WHILE_501_I(p, o, s)
# define BOOST_PP_WHILE_502(p, o, s) BOOST_PP_WHILE_502_I(p, o, s)
# define BOOST_PP_WHILE_503(p, o, s) BOOST_PP_WHILE_503_I(p, o, s)
# define BOOST_PP_WHILE_504(p, o, s) BOOST_PP_WHILE_504_I(p, o, s)
# define BOOST_PP_WHILE_505(p, o, s) BOOST_PP_WHILE_505_I(p, o, s)
# define BOOST_PP_WHILE_506(p, o, s) BOOST_PP_WHILE_506_I(p, o, s)
# define BOOST_PP_WHILE_507(p, o, s) BOOST_PP_WHILE_507_I(p, o, s)
# define BOOST_PP_WHILE_508(p, o, s) BOOST_PP_WHILE_508_I(p, o, s)
# define BOOST_PP_WHILE_509(p, o, s) BOOST_PP_WHILE_509_I(p, o, s)
# define BOOST_PP_WHILE_510(p, o, s) BOOST_PP_WHILE_510_I(p, o, s)
# define BOOST_PP_WHILE_511(p, o, s) BOOST_PP_WHILE_511_I(p, o, s)
# define BOOST_PP_WHILE_512(p, o, s) BOOST_PP_WHILE_512_I(p, o, s)
#
# define BOOST_PP_WHILE_257_I(p, o, s) BOOST_PP_IF(p(258, s), BOOST_PP_WHILE_258, s BOOST_PP_TUPLE_EAT_3)(p, o, o(258, s))
# define BOOST_PP_WHILE_258_I(p, o, s) BOOST_PP_IF(p(259, s), BOOST_PP_WHILE_259, s BOOST_PP_TUPLE_EAT_3)(p, o, o(259, s))
# define BOOST_PP_WHILE_259_I(p, o, s) BOOST_PP_IF(p(260, s), BOOST_PP_WHILE_260, s BOOST_PP_TUPLE_EAT_3)(p, o, o(260, s))
# define BOOST_PP_WHILE_260_I(p, o, s) BOOST_PP_IF(p(261, s), BOOST_PP_WHILE_261, s BOOST_PP_TUPLE_EAT_3)(p, o, o(261, s))
# define BOOST_PP_WHILE_261_I(p, o, s) BOOST_PP_IF(p(262, s), BOOST_PP_WHILE_262, s BOOST_PP_TUPLE_EAT_3)(p, o, o(262, s))
# define BOOST_PP_WHILE_262_I(p, o, s) BOOST_PP_IF(p(263, s), BOOST_PP_WHILE_263, s BOOST_PP_TUPLE_EAT_3)(p, o, o(263, s))
# define BOOST_PP_WHILE_263_I(p, o, s) BOOST_PP_IF(p(264, s), BOOST_PP_WHILE_264, s BOOST_PP_TUPLE_EAT_3)(p, o, o(264, s))
# define BOOST_PP_WHILE_264_I(p, o, s) BOOST_PP_IF(p(265, s), BOOST_PP_WHILE_265, s BOOST_PP_TUPLE_EAT_3)(p, o, o(265, s))
# define BOOST_PP_WHILE_265_I(p, o, s) BOOST_PP_IF(p(266, s), BOOST_PP_WHILE_266, s BOOST_PP_TUPLE_EAT_3)(p, o, o(266, s))
# define BOOST_PP_WHILE_266_I(p, o, s) BOOST_PP_IF(p(267, s), BOOST_PP_WHILE_267, s BOOST_PP_TUPLE_EAT_3)(p, o, o(267, s))
# define BOOST_PP_WHILE_267_I(p, o, s) BOOST_PP_IF(p(268, s), BOOST_PP_WHILE_268, s BOOST_PP_TUPLE_EAT_3)(p, o, o(268, s))
# define BOOST_PP_WHILE_268_I(p, o, s) BOOST_PP_IF(p(269, s), BOOST_PP_WHILE_269, s BOOST_PP_TUPLE_EAT_3)(p, o, o(269, s))
# define BOOST_PP_WHILE_269_I(p, o, s) BOOST_PP_IF(p(270, s), BOOST_PP_WHILE_270, s BOOST_PP_TUPLE_EAT_3)(p, o, o(270, s))
# define BOOST_PP_WHILE_270_I(p, o, s) BOOST_PP_IF(p(271, s), BOOST_PP_WHILE_271, s BOOST_PP_TUPLE_EAT_3)(p, o, o(271, s))
# define BOOST_PP_WHILE_271_I(p, o, s) BOOST_PP_IF(p(272, s), BOOST_PP_WHILE_272, s BOOST_PP_TUPLE_EAT_3)(p, o, o(272, s))
# define BOOST_PP_WHILE_272_I(p, o, s) BOOST_PP_IF(p(273, s), BOOST_PP_WHILE_273, s BOOST_PP_TUPLE_EAT_3)(p, o, o(273, s))
# define BOOST_PP_WHILE_273_I(p, o, s) BOOST_PP_IF(p(274, s), BOOST_PP_WHILE_274, s BOOST_PP_TUPLE_EAT_3)(p, o, o(274, s))
# define BOOST_PP_WHILE_274_I(p, o, s) BOOST_PP_IF(p(275, s), BOOST_PP_WHILE_275, s BOOST_PP_TUPLE_EAT_3)(p, o, o(275, s))
# define BOOST_PP_WHILE_275_I(p, o, s) BOOST_PP_IF(p(276, s), BOOST_PP_WHILE_276, s BOOST_PP_TUPLE_EAT_3)(p, o, o(276, s))
# define BOOST_PP_WHILE_276_I(p, o, s) BOOST_PP_IF(p(277, s), BOOST_PP_WHILE_277, s BOOST_PP_TUPLE_EAT_3)(p, o, o(277, s))
# define BOOST_PP_WHILE_277_I(p, o, s) BOOST_PP_IF(p(278, s), BOOST_PP_WHILE_278, s BOOST_PP_TUPLE_EAT_3)(p, o, o(278, s))
# define BOOST_PP_WHILE_278_I(p, o, s) BOOST_PP_IF(p(279, s), BOOST_PP_WHILE_279, s BOOST_PP_TUPLE_EAT_3)(p, o, o(279, s))
# define BOOST_PP_WHILE_279_I(p, o, s) BOOST_PP_IF(p(280, s), BOOST_PP_WHILE_280, s BOOST_PP_TUPLE_EAT_3)(p, o, o(280, s))
# define BOOST_PP_WHILE_280_I(p, o, s) BOOST_PP_IF(p(281, s), BOOST_PP_WHILE_281, s BOOST_PP_TUPLE_EAT_3)(p, o, o(281, s))
# define BOOST_PP_WHILE_281_I(p, o, s) BOOST_PP_IF(p(282, s), BOOST_PP_WHILE_282, s BOOST_PP_TUPLE_EAT_3)(p, o, o(282, s))
# define BOOST_PP_WHILE_282_I(p, o, s) BOOST_PP_IF(p(283, s), BOOST_PP_WHILE_283, s BOOST_PP_TUPLE_EAT_3)(p, o, o(283, s))
# define BOOST_PP_WHILE_283_I(p, o, s) BOOST_PP_IF(p(284, s), BOOST_PP_WHILE_284, s BOOST_PP_TUPLE_EAT_3)(p, o, o(284, s))
# define BOOST_PP_WHILE_284_I(p, o, s) BOOST_PP_IF(p(285, s), BOOST_PP_WHILE_285, s BOOST_PP_TUPLE_EAT_3)(p, o, o(285, s))
# define BOOST_PP_WHILE_285_I(p, o, s) BOOST_PP_IF(p(286, s), BOOST_PP_WHILE_286, s BOOST_PP_TUPLE_EAT_3)(p, o, o(286, s))
# define BOOST_PP_WHILE_286_I(p, o, s) BOOST_PP_IF(p(287, s), BOOST_PP_WHILE_287, s BOOST_PP_TUPLE_EAT_3)(p, o, o(287, s))
# define BOOST_PP_WHILE_287_I(p, o, s) BOOST_PP_IF(p(288, s), BOOST_PP_WHILE_288, s BOOST_PP_TUPLE_EAT_3)(p, o, o(288, s))
# define BOOST_PP_WHILE_288_I(p, o, s) BOOST_PP_IF(p(289, s), BOOST_PP_WHILE_289, s BOOST_PP_TUPLE_EAT_3)(p, o, o(289, s))
# define BOOST_PP_WHILE_289_I(p, o, s) BOOST_PP_IF(p(290, s), BOOST_PP_WHILE_290, s BOOST_PP_TUPLE_EAT_3)(p, o, o(290, s))
# define BOOST_PP_WHILE_290_I(p, o, s) BOOST_PP_IF(p(291, s), BOOST_PP_WHILE_291, s BOOST_PP_TUPLE_EAT_3)(p, o, o(291, s))
# define BOOST_PP_WHILE_291_I(p, o, s) BOOST_PP_IF(p(292, s), BOOST_PP_WHILE_292, s BOOST_PP_TUPLE_EAT_3)(p, o, o(292, s))
# define BOOST_PP_WHILE_292_I(p, o, s) BOOST_PP_IF(p(293, s), BOOST_PP_WHILE_293, s BOOST_PP_TUPLE_EAT_3)(p, o, o(293, s))
# define BOOST_PP_WHILE_293_I(p, o, s) BOOST_PP_IF(p(294, s), BOOST_PP_WHILE_294, s BOOST_PP_TUPLE_EAT_3)(p, o, o(294, s))
# define BOOST_PP_WHILE_294_I(p, o, s) BOOST_PP_IF(p(295, s), BOOST_PP_WHILE_295, s BOOST_PP_TUPLE_EAT_3)(p, o, o(295, s))
# define BOOST_PP_WHILE_295_I(p, o, s) BOOST_PP_IF(p(296, s), BOOST_PP_WHILE_296, s BOOST_PP_TUPLE_EAT_3)(p, o, o(296, s))
# define BOOST_PP_WHILE_296_I(p, o, s) BOOST_PP_IF(p(297, s), BOOST_PP_WHILE_297, s BOOST_PP_TUPLE_EAT_3)(p, o, o(297, s))
# define BOOST_PP_WHILE_297_I(p, o, s) BOOST_PP_IF(p(298, s), BOOST_PP_WHILE_298, s BOOST_PP_TUPLE_EAT_3)(p, o, o(298, s))
# define BOOST_PP_WHILE_298_I(p, o, s) BOOST_PP_IF(p(299, s), BOOST_PP_WHILE_299, s BOOST_PP_TUPLE_EAT_3)(p, o, o(299, s))
# define BOOST_PP_WHILE_299_I(p, o, s) BOOST_PP_IF(p(300, s), BOOST_PP_WHILE_300, s BOOST_PP_TUPLE_EAT_3)(p, o, o(300, s))
# define BOOST_PP_WHILE_300_I(p, o, s) BOOST_PP_IF(p(301, s), BOOST_PP_WHILE_301, s BOOST_PP_TUPLE_EAT_3)(p, o, o(301, s))
# define BOOST_PP_WHILE_301_I(p, o, s) BOOST_PP_IF(p(302, s), BOOST_PP_WHILE_302, s BOOST_PP_TUPLE_EAT_3)(p, o, o(302, s))
# define BOOST_PP_WHILE_302_I(p, o, s) BOOST_PP_IF(p(303, s), BOOST_PP_WHILE_303, s BOOST_PP_TUPLE_EAT_3)(p, o, o(303, s))
# define BOOST_PP_WHILE_303_I(p, o, s) BOOST_PP_IF(p(304, s), BOOST_PP_WHILE_304, s BOOST_PP_TUPLE_EAT_3)(p, o, o(304, s))
# define BOOST_PP_WHILE_304_I(p, o, s) BOOST_PP_IF(p(305, s), BOOST_PP_WHILE_305, s BOOST_PP_TUPLE_EAT_3)(p, o, o(305, s))
# define BOOST_PP_WHILE_305_I(p, o, s) BOOST_PP_IF(p(306, s), BOOST_PP_WHILE_306, s BOOST_PP_TUPLE_EAT_3)(p, o, o(306, s))
# define BOOST_PP_WHILE_306_I(p, o, s) BOOST_PP_IF(p(307, s), BOOST_PP_WHILE_307, s BOOST_PP_TUPLE_EAT_3)(p, o, o(307, s))
# define BOOST_PP_WHILE_307_I(p, o, s) BOOST_PP_IF(p(308, s), BOOST_PP_WHILE_308, s BOOST_PP_TUPLE_EAT_3)(p, o, o(308, s))
# define BOOST_PP_WHILE_308_I(p, o, s) BOOST_PP_IF(p(309, s), BOOST_PP_WHILE_309, s BOOST_PP_TUPLE_EAT_3)(p, o, o(309, s))
# define BOOST_PP_WHILE_309_I(p, o, s) BOOST_PP_IF(p(310, s), BOOST_PP_WHILE_310, s BOOST_PP_TUPLE_EAT_3)(p, o, o(310, s))
# define BOOST_PP_WHILE_310_I(p, o, s) BOOST_PP_IF(p(311, s), BOOST_PP_WHILE_311, s BOOST_PP_TUPLE_EAT_3)(p, o, o(311, s))
# define BOOST_PP_WHILE_311_I(p, o, s) BOOST_PP_IF(p(312, s), BOOST_PP_WHILE_312, s BOOST_PP_TUPLE_EAT_3)(p, o, o(312, s))
# define BOOST_PP_WHILE_312_I(p, o, s) BOOST_PP_IF(p(313, s), BOOST_PP_WHILE_313, s BOOST_PP_TUPLE_EAT_3)(p, o, o(313, s))
# define BOOST_PP_WHILE_313_I(p, o, s) BOOST_PP_IF(p(314, s), BOOST_PP_WHILE_314, s BOOST_PP_TUPLE_EAT_3)(p, o, o(314, s))
# define BOOST_PP_WHILE_314_I(p, o, s) BOOST_PP_IF(p(315, s), BOOST_PP_WHILE_315, s BOOST_PP_TUPLE_EAT_3)(p, o, o(315, s))
# define BOOST_PP_WHILE_315_I(p, o, s) BOOST_PP_IF(p(316, s), BOOST_PP_WHILE_316, s BOOST_PP_TUPLE_EAT_3)(p, o, o(316, s))
# define BOOST_PP_WHILE_316_I(p, o, s) BOOST_PP_IF(p(317, s), BOOST_PP_WHILE_317, s BOOST_PP_TUPLE_EAT_3)(p, o, o(317, s))
# define BOOST_PP_WHILE_317_I(p, o, s) BOOST_PP_IF(p(318, s), BOOST_PP_WHILE_318, s BOOST_PP_TUPLE_EAT_3)(p, o, o(318, s))
# define BOOST_PP_WHILE_318_I(p, o, s) BOOST_PP_IF(p(319, s), BOOST_PP_WHILE_319, s BOOST_PP_TUPLE_EAT_3)(p, o, o(319, s))
# define BOOST_PP_WHILE_319_I(p, o, s) BOOST_PP_IF(p(320, s), BOOST_PP_WHILE_320, s BOOST_PP_TUPLE_EAT_3)(p, o, o(320, s))
# define BOOST_PP_WHILE_320_I(p, o, s) BOOST_PP_IF(p(321, s), BOOST_PP_WHILE_321, s BOOST_PP_TUPLE_EAT_3)(p, o, o(321, s))
# define BOOST_PP_WHILE_321_I(p, o, s) BOOST_PP_IF(p(322, s), BOOST_PP_WHILE_322, s BOOST_PP_TUPLE_EAT_3)(p, o, o(322, s))
# define BOOST_PP_WHILE_322_I(p, o, s) BOOST_PP_IF(p(323, s), BOOST_PP_WHILE_323, s BOOST_PP_TUPLE_EAT_3)(p, o, o(323, s))
# define BOOST_PP_WHILE_323_I(p, o, s) BOOST_PP_IF(p(324, s), BOOST_PP_WHILE_324, s BOOST_PP_TUPLE_EAT_3)(p, o, o(324, s))
# define BOOST_PP_WHILE_324_I(p, o, s) BOOST_PP_IF(p(325, s), BOOST_PP_WHILE_325, s BOOST_PP_TUPLE_EAT_3)(p, o, o(325, s))
# define BOOST_PP_WHILE_325_I(p, o, s) BOOST_PP_IF(p(326, s), BOOST_PP_WHILE_326, s BOOST_PP_TUPLE_EAT_3)(p, o, o(326, s))
# define BOOST_PP_WHILE_326_I(p, o, s) BOOST_PP_IF(p(327, s), BOOST_PP_WHILE_327, s BOOST_PP_TUPLE_EAT_3)(p, o, o(327, s))
# define BOOST_PP_WHILE_327_I(p, o, s) BOOST_PP_IF(p(328, s), BOOST_PP_WHILE_328, s BOOST_PP_TUPLE_EAT_3)(p, o, o(328, s))
# define BOOST_PP_WHILE_328_I(p, o, s) BOOST_PP_IF(p(329, s), BOOST_PP_WHILE_329, s BOOST_PP_TUPLE_EAT_3)(p, o, o(329, s))
# define BOOST_PP_WHILE_329_I(p, o, s) BOOST_PP_IF(p(330, s), BOOST_PP_WHILE_330, s BOOST_PP_TUPLE_EAT_3)(p, o, o(330, s))
# define BOOST_PP_WHILE_330_I(p, o, s) BOOST_PP_IF(p(331, s), BOOST_PP_WHILE_331, s BOOST_PP_TUPLE_EAT_3)(p, o, o(331, s))
# define BOOST_PP_WHILE_331_I(p, o, s) BOOST_PP_IF(p(332, s), BOOST_PP_WHILE_332, s BOOST_PP_TUPLE_EAT_3)(p, o, o(332, s))
# define BOOST_PP_WHILE_332_I(p, o, s) BOOST_PP_IF(p(333, s), BOOST_PP_WHILE_333, s BOOST_PP_TUPLE_EAT_3)(p, o, o(333, s))
# define BOOST_PP_WHILE_333_I(p, o, s) BOOST_PP_IF(p(334, s), BOOST_PP_WHILE_334, s BOOST_PP_TUPLE_EAT_3)(p, o, o(334, s))
# define BOOST_PP_WHILE_334_I(p, o, s) BOOST_PP_IF(p(335, s), BOOST_PP_WHILE_335, s BOOST_PP_TUPLE_EAT_3)(p, o, o(335, s))
# define BOOST_PP_WHILE_335_I(p, o, s) BOOST_PP_IF(p(336, s), BOOST_PP_WHILE_336, s BOOST_PP_TUPLE_EAT_3)(p, o, o(336, s))
# define BOOST_PP_WHILE_336_I(p, o, s) BOOST_PP_IF(p(337, s), BOOST_PP_WHILE_337, s BOOST_PP_TUPLE_EAT_3)(p, o, o(337, s))
# define BOOST_PP_WHILE_337_I(p, o, s) BOOST_PP_IF(p(338, s), BOOST_PP_WHILE_338, s BOOST_PP_TUPLE_EAT_3)(p, o, o(338, s))
# define BOOST_PP_WHILE_338_I(p, o, s) BOOST_PP_IF(p(339, s), BOOST_PP_WHILE_339, s BOOST_PP_TUPLE_EAT_3)(p, o, o(339, s))
# define BOOST_PP_WHILE_339_I(p, o, s) BOOST_PP_IF(p(340, s), BOOST_PP_WHILE_340, s BOOST_PP_TUPLE_EAT_3)(p, o, o(340, s))
# define BOOST_PP_WHILE_340_I(p, o, s) BOOST_PP_IF(p(341, s), BOOST_PP_WHILE_341, s BOOST_PP_TUPLE_EAT_3)(p, o, o(341, s))
# define BOOST_PP_WHILE_341_I(p, o, s) BOOST_PP_IF(p(342, s), BOOST_PP_WHILE_342, s BOOST_PP_TUPLE_EAT_3)(p, o, o(342, s))
# define BOOST_PP_WHILE_342_I(p, o, s) BOOST_PP_IF(p(343, s), BOOST_PP_WHILE_343, s BOOST_PP_TUPLE_EAT_3)(p, o, o(343, s))
# define BOOST_PP_WHILE_343_I(p, o, s) BOOST_PP_IF(p(344, s), BOOST_PP_WHILE_344, s BOOST_PP_TUPLE_EAT_3)(p, o, o(344, s))
# define BOOST_PP_WHILE_344_I(p, o, s) BOOST_PP_IF(p(345, s), BOOST_PP_WHILE_345, s BOOST_PP_TUPLE_EAT_3)(p, o, o(345, s))
# define BOOST_PP_WHILE_345_I(p, o, s) BOOST_PP_IF(p(346, s), BOOST_PP_WHILE_346, s BOOST_PP_TUPLE_EAT_3)(p, o, o(346, s))
# define BOOST_PP_WHILE_346_I(p, o, s) BOOST_PP_IF(p(347, s), BOOST_PP_WHILE_347, s BOOST_PP_TUPLE_EAT_3)(p, o, o(347, s))
# define BOOST_PP_WHILE_347_I(p, o, s) BOOST_PP_IF(p(348, s), BOOST_PP_WHILE_348, s BOOST_PP_TUPLE_EAT_3)(p, o, o(348, s))
# define BOOST_PP_WHILE_348_I(p, o, s) BOOST_PP_IF(p(349, s), BOOST_PP_WHILE_349, s BOOST_PP_TUPLE_EAT_3)(p, o, o(349, s))
# define BOOST_PP_WHILE_349_I(p, o, s) BOOST_PP_IF(p(350, s), BOOST_PP_WHILE_350, s BOOST_PP_TUPLE_EAT_3)(p, o, o(350, s))
# define BOOST_PP_WHILE_350_I(p, o, s) BOOST_PP_IF(p(351, s), BOOST_PP_WHILE_351, s BOOST_PP_TUPLE_EAT_3)(p, o, o(351, s))
# define BOOST_PP_WHILE_351_I(p, o, s) BOOST_PP_IF(p(352, s), BOOST_PP_WHILE_352, s BOOST_PP_TUPLE_EAT_3)(p, o, o(352, s))
# define BOOST_PP_WHILE_352_I(p, o, s) BOOST_PP_IF(p(353, s), BOOST_PP_WHILE_353, s BOOST_PP_TUPLE_EAT_3)(p, o, o(353, s))
# define BOOST_PP_WHILE_353_I(p, o, s) BOOST_PP_IF(p(354, s), BOOST_PP_WHILE_354, s BOOST_PP_TUPLE_EAT_3)(p, o, o(354, s))
# define BOOST_PP_WHILE_354_I(p, o, s) BOOST_PP_IF(p(355, s), BOOST_PP_WHILE_355, s BOOST_PP_TUPLE_EAT_3)(p, o, o(355, s))
# define BOOST_PP_WHILE_355_I(p, o, s) BOOST_PP_IF(p(356, s), BOOST_PP_WHILE_356, s BOOST_PP_TUPLE_EAT_3)(p, o, o(356, s))
# define BOOST_PP_WHILE_356_I(p, o, s) BOOST_PP_IF(p(357, s), BOOST_PP_WHILE_357, s BOOST_PP_TUPLE_EAT_3)(p, o, o(357, s))
# define BOOST_PP_WHILE_357_I(p, o, s) BOOST_PP_IF(p(358, s), BOOST_PP_WHILE_358, s BOOST_PP_TUPLE_EAT_3)(p, o, o(358, s))
# define BOOST_PP_WHILE_358_I(p, o, s) BOOST_PP_IF(p(359, s), BOOST_PP_WHILE_359, s BOOST_PP_TUPLE_EAT_3)(p, o, o(359, s))
# define BOOST_PP_WHILE_359_I(p, o, s) BOOST_PP_IF(p(360, s), BOOST_PP_WHILE_360, s BOOST_PP_TUPLE_EAT_3)(p, o, o(360, s))
# define BOOST_PP_WHILE_360_I(p, o, s) BOOST_PP_IF(p(361, s), BOOST_PP_WHILE_361, s BOOST_PP_TUPLE_EAT_3)(p, o, o(361, s))
# define BOOST_PP_WHILE_361_I(p, o, s) BOOST_PP_IF(p(362, s), BOOST_PP_WHILE_362, s BOOST_PP_TUPLE_EAT_3)(p, o, o(362, s))
# define BOOST_PP_WHILE_362_I(p, o, s) BOOST_PP_IF(p(363, s), BOOST_PP_WHILE_363, s BOOST_PP_TUPLE_EAT_3)(p, o, o(363, s))
# define BOOST_PP_WHILE_363_I(p, o, s) BOOST_PP_IF(p(364, s), BOOST_PP_WHILE_364, s BOOST_PP_TUPLE_EAT_3)(p, o, o(364, s))
# define BOOST_PP_WHILE_364_I(p, o, s) BOOST_PP_IF(p(365, s), BOOST_PP_WHILE_365, s BOOST_PP_TUPLE_EAT_3)(p, o, o(365, s))
# define BOOST_PP_WHILE_365_I(p, o, s) BOOST_PP_IF(p(366, s), BOOST_PP_WHILE_366, s BOOST_PP_TUPLE_EAT_3)(p, o, o(366, s))
# define BOOST_PP_WHILE_366_I(p, o, s) BOOST_PP_IF(p(367, s), BOOST_PP_WHILE_367, s BOOST_PP_TUPLE_EAT_3)(p, o, o(367, s))
# define BOOST_PP_WHILE_367_I(p, o, s) BOOST_PP_IF(p(368, s), BOOST_PP_WHILE_368, s BOOST_PP_TUPLE_EAT_3)(p, o, o(368, s))
# define BOOST_PP_WHILE_368_I(p, o, s) BOOST_PP_IF(p(369, s), BOOST_PP_WHILE_369, s BOOST_PP_TUPLE_EAT_3)(p, o, o(369, s))
# define BOOST_PP_WHILE_369_I(p, o, s) BOOST_PP_IF(p(370, s), BOOST_PP_WHILE_370, s BOOST_PP_TUPLE_EAT_3)(p, o, o(370, s))
# define BOOST_PP_WHILE_370_I(p, o, s) BOOST_PP_IF(p(371, s), BOOST_PP_WHILE_371, s BOOST_PP_TUPLE_EAT_3)(p, o, o(371, s))
# define BOOST_PP_WHILE_371_I(p, o, s) BOOST_PP_IF(p(372, s), BOOST_PP_WHILE_372, s BOOST_PP_TUPLE_EAT_3)(p, o, o(372, s))
# define BOOST_PP_WHILE_372_I(p, o, s) BOOST_PP_IF(p(373, s), BOOST_PP_WHILE_373, s BOOST_PP_TUPLE_EAT_3)(p, o, o(373, s))
# define BOOST_PP_WHILE_373_I(p, o, s) BOOST_PP_IF(p(374, s), BOOST_PP_WHILE_374, s BOOST_PP_TUPLE_EAT_3)(p, o, o(374, s))
# define BOOST_PP_WHILE_374_I(p, o, s) BOOST_PP_IF(p(375, s), BOOST_PP_WHILE_375, s BOOST_PP_TUPLE_EAT_3)(p, o, o(375, s))
# define BOOST_PP_WHILE_375_I(p, o, s) BOOST_PP_IF(p(376, s), BOOST_PP_WHILE_376, s BOOST_PP_TUPLE_EAT_3)(p, o, o(376, s))
# define BOOST_PP_WHILE_376_I(p, o, s) BOOST_PP_IF(p(377, s), BOOST_PP_WHILE_377, s BOOST_PP_TUPLE_EAT_3)(p, o, o(377, s))
# define BOOST_PP_WHILE_377_I(p, o, s) BOOST_PP_IF(p(378, s), BOOST_PP_WHILE_378, s BOOST_PP_TUPLE_EAT_3)(p, o, o(378, s))
# define BOOST_PP_WHILE_378_I(p, o, s) BOOST_PP_IF(p(379, s), BOOST_PP_WHILE_379, s BOOST_PP_TUPLE_EAT_3)(p, o, o(379, s))
# define BOOST_PP_WHILE_379_I(p, o, s) BOOST_PP_IF(p(380, s), BOOST_PP_WHILE_380, s BOOST_PP_TUPLE_EAT_3)(p, o, o(380, s))
# define BOOST_PP_WHILE_380_I(p, o, s) BOOST_PP_IF(p(381, s), BOOST_PP_WHILE_381, s BOOST_PP_TUPLE_EAT_3)(p, o, o(381, s))
# define BOOST_PP_WHILE_381_I(p, o, s) BOOST_PP_IF(p(382, s), BOOST_PP_WHILE_382, s BOOST_PP_TUPLE_EAT_3)(p, o, o(382, s))
# define BOOST_PP_WHILE_382_I(p, o, s) BOOST_PP_IF(p(383, s), BOOST_PP_WHILE_383, s BOOST_PP_TUPLE_EAT_3)(p, o, o(383, s))
# define BOOST_PP_WHILE_383_I(p, o, s) BOOST_PP_IF(p(384, s), BOOST_PP_WHILE_384, s BOOST_PP_TUPLE_EAT_3)(p, o, o(384, s))
# define BOOST_PP_WHILE_384_I(p, o, s) BOOST_PP_IF(p(385, s), BOOST_PP_WHILE_385, s BOOST_PP_TUPLE_EAT_3)(p, o, o(385, s))
# define BOOST_PP_WHILE_385_I(p, o, s) BOOST_PP_IF(p(386, s), BOOST_PP_WHILE_386, s BOOST_PP_TUPLE_EAT_3)(p, o, o(386, s))
# define BOOST_PP_WHILE_386_I(p, o, s) BOOST_PP_IF(p(387, s), BOOST_PP_WHILE_387, s BOOST_PP_TUPLE_EAT_3)(p, o, o(387, s))
# define BOOST_PP_WHILE_387_I(p, o, s) BOOST_PP_IF(p(388, s), BOOST_PP_WHILE_388, s BOOST_PP_TUPLE_EAT_3)(p, o, o(388, s))
# define BOOST_PP_WHILE_388_I(p, o, s) BOOST_PP_IF(p(389, s), BOOST_PP_WHILE_389, s BOOST_PP_TUPLE_EAT_3)(p, o, o(389, s))
# define BOOST_PP_WHILE_389_I(p, o, s) BOOST_PP_IF(p(390, s), BOOST_PP_WHILE_390, s BOOST_PP_TUPLE_EAT_3)(p, o, o(390, s))
# define BOOST_PP_WHILE_390_I(p, o, s) BOOST_PP_IF(p(391, s), BOOST_PP_WHILE_391, s BOOST_PP_TUPLE_EAT_3)(p, o, o(391, s))
# define BOOST_PP_WHILE_391_I(p, o, s) BOOST_PP_IF(p(392, s), BOOST_PP_WHILE_392, s BOOST_PP_TUPLE_EAT_3)(p, o, o(392, s))
# define BOOST_PP_WHILE_392_I(p, o, s) BOOST_PP_IF(p(393, s), BOOST_PP_WHILE_393, s BOOST_PP_TUPLE_EAT_3)(p, o, o(393, s))
# define BOOST_PP_WHILE_393_I(p, o, s) BOOST_PP_IF(p(394, s), BOOST_PP_WHILE_394, s BOOST_PP_TUPLE_EAT_3)(p, o, o(394, s))
# define BOOST_PP_WHILE_394_I(p, o, s) BOOST_PP_IF(p(395, s), BOOST_PP_WHILE_395, s BOOST_PP_TUPLE_EAT_3)(p, o, o(395, s))
# define BOOST_PP_WHILE_395_I(p, o, s) BOOST_PP_IF(p(396, s), BOOST_PP_WHILE_396, s BOOST_PP_TUPLE_EAT_3)(p, o, o(396, s))
# define BOOST_PP_WHILE_396_I(p, o, s) BOOST_PP_IF(p(397, s), BOOST_PP_WHILE_397, s BOOST_PP_TUPLE_EAT_3)(p, o, o(397, s))
# define BOOST_PP_WHILE_397_I(p, o, s) BOOST_PP_IF(p(398, s), BOOST_PP_WHILE_398, s BOOST_PP_TUPLE_EAT_3)(p, o, o(398, s))
# define BOOST_PP_WHILE_398_I(p, o, s) BOOST_PP_IF(p(399, s), BOOST_PP_WHILE_399, s BOOST_PP_TUPLE_EAT_3)(p, o, o(399, s))
# define BOOST_PP_WHILE_399_I(p, o, s) BOOST_PP_IF(p(400, s), BOOST_PP_WHILE_400, s BOOST_PP_TUPLE_EAT_3)(p, o, o(400, s))
# define BOOST_PP_WHILE_400_I(p, o, s) BOOST_PP_IF(p(401, s), BOOST_PP_WHILE_401, s BOOST_PP_TUPLE_EAT_3)(p, o, o(401, s))
# define BOOST_PP_WHILE_401_I(p, o, s) BOOST_PP_IF(p(402, s), BOOST_PP_WHILE_402, s BOOST_PP_TUPLE_EAT_3)(p, o, o(402, s))
# define BOOST_PP_WHILE_402_I(p, o, s) BOOST_PP_IF(p(403, s), BOOST_PP_WHILE_403, s BOOST_PP_TUPLE_EAT_3)(p, o, o(403, s))
# define BOOST_PP_WHILE_403_I(p, o, s) BOOST_PP_IF(p(404, s), BOOST_PP_WHILE_404, s BOOST_PP_TUPLE_EAT_3)(p, o, o(404, s))
# define BOOST_PP_WHILE_404_I(p, o, s) BOOST_PP_IF(p(405, s), BOOST_PP_WHILE_405, s BOOST_PP_TUPLE_EAT_3)(p, o, o(405, s))
# define BOOST_PP_WHILE_405_I(p, o, s) BOOST_PP_IF(p(406, s), BOOST_PP_WHILE_406, s BOOST_PP_TUPLE_EAT_3)(p, o, o(406, s))
# define BOOST_PP_WHILE_406_I(p, o, s) BOOST_PP_IF(p(407, s), BOOST_PP_WHILE_407, s BOOST_PP_TUPLE_EAT_3)(p, o, o(407, s))
# define BOOST_PP_WHILE_407_I(p, o, s) BOOST_PP_IF(p(408, s), BOOST_PP_WHILE_408, s BOOST_PP_TUPLE_EAT_3)(p, o, o(408, s))
# define BOOST_PP_WHILE_408_I(p, o, s) BOOST_PP_IF(p(409, s), BOOST_PP_WHILE_409, s BOOST_PP_TUPLE_EAT_3)(p, o, o(409, s))
# define BOOST_PP_WHILE_409_I(p, o, s) BOOST_PP_IF(p(410, s), BOOST_PP_WHILE_410, s BOOST_PP_TUPLE_EAT_3)(p, o, o(410, s))
# define BOOST_PP_WHILE_410_I(p, o, s) BOOST_PP_IF(p(411, s), BOOST_PP_WHILE_411, s BOOST_PP_TUPLE_EAT_3)(p, o, o(411, s))
# define BOOST_PP_WHILE_411_I(p, o, s) BOOST_PP_IF(p(412, s), BOOST_PP_WHILE_412, s BOOST_PP_TUPLE_EAT_3)(p, o, o(412, s))
# define BOOST_PP_WHILE_412_I(p, o, s) BOOST_PP_IF(p(413, s), BOOST_PP_WHILE_413, s BOOST_PP_TUPLE_EAT_3)(p, o, o(413, s))
# define BOOST_PP_WHILE_413_I(p, o, s) BOOST_PP_IF(p(414, s), BOOST_PP_WHILE_414, s BOOST_PP_TUPLE_EAT_3)(p, o, o(414, s))
# define BOOST_PP_WHILE_414_I(p, o, s) BOOST_PP_IF(p(415, s), BOOST_PP_WHILE_415, s BOOST_PP_TUPLE_EAT_3)(p, o, o(415, s))
# define BOOST_PP_WHILE_415_I(p, o, s) BOOST_PP_IF(p(416, s), BOOST_PP_WHILE_416, s BOOST_PP_TUPLE_EAT_3)(p, o, o(416, s))
# define BOOST_PP_WHILE_416_I(p, o, s) BOOST_PP_IF(p(417, s), BOOST_PP_WHILE_417, s BOOST_PP_TUPLE_EAT_3)(p, o, o(417, s))
# define BOOST_PP_WHILE_417_I(p, o, s) BOOST_PP_IF(p(418, s), BOOST_PP_WHILE_418, s BOOST_PP_TUPLE_EAT_3)(p, o, o(418, s))
# define BOOST_PP_WHILE_418_I(p, o, s) BOOST_PP_IF(p(419, s), BOOST_PP_WHILE_419, s BOOST_PP_TUPLE_EAT_3)(p, o, o(419, s))
# define BOOST_PP_WHILE_419_I(p, o, s) BOOST_PP_IF(p(420, s), BOOST_PP_WHILE_420, s BOOST_PP_TUPLE_EAT_3)(p, o, o(420, s))
# define BOOST_PP_WHILE_420_I(p, o, s) BOOST_PP_IF(p(421, s), BOOST_PP_WHILE_421, s BOOST_PP_TUPLE_EAT_3)(p, o, o(421, s))
# define BOOST_PP_WHILE_421_I(p, o, s) BOOST_PP_IF(p(422, s), BOOST_PP_WHILE_422, s BOOST_PP_TUPLE_EAT_3)(p, o, o(422, s))
# define BOOST_PP_WHILE_422_I(p, o, s) BOOST_PP_IF(p(423, s), BOOST_PP_WHILE_423, s BOOST_PP_TUPLE_EAT_3)(p, o, o(423, s))
# define BOOST_PP_WHILE_423_I(p, o, s) BOOST_PP_IF(p(424, s), BOOST_PP_WHILE_424, s BOOST_PP_TUPLE_EAT_3)(p, o, o(424, s))
# define BOOST_PP_WHILE_424_I(p, o, s) BOOST_PP_IF(p(425, s), BOOST_PP_WHILE_425, s BOOST_PP_TUPLE_EAT_3)(p, o, o(425, s))
# define BOOST_PP_WHILE_425_I(p, o, s) BOOST_PP_IF(p(426, s), BOOST_PP_WHILE_426, s BOOST_PP_TUPLE_EAT_3)(p, o, o(426, s))
# define BOOST_PP_WHILE_426_I(p, o, s) BOOST_PP_IF(p(427, s), BOOST_PP_WHILE_427, s BOOST_PP_TUPLE_EAT_3)(p, o, o(427, s))
# define BOOST_PP_WHILE_427_I(p, o, s) BOOST_PP_IF(p(428, s), BOOST_PP_WHILE_428, s BOOST_PP_TUPLE_EAT_3)(p, o, o(428, s))
# define BOOST_PP_WHILE_428_I(p, o, s) BOOST_PP_IF(p(429, s), BOOST_PP_WHILE_429, s BOOST_PP_TUPLE_EAT_3)(p, o, o(429, s))
# define BOOST_PP_WHILE_429_I(p, o, s) BOOST_PP_IF(p(430, s), BOOST_PP_WHILE_430, s BOOST_PP_TUPLE_EAT_3)(p, o, o(430, s))
# define BOOST_PP_WHILE_430_I(p, o, s) BOOST_PP_IF(p(431, s), BOOST_PP_WHILE_431, s BOOST_PP_TUPLE_EAT_3)(p, o, o(431, s))
# define BOOST_PP_WHILE_431_I(p, o, s) BOOST_PP_IF(p(432, s), BOOST_PP_WHILE_432, s BOOST_PP_TUPLE_EAT_3)(p, o, o(432, s))
# define BOOST_PP_WHILE_432_I(p, o, s) BOOST_PP_IF(p(433, s), BOOST_PP_WHILE_433, s BOOST_PP_TUPLE_EAT_3)(p, o, o(433, s))
# define BOOST_PP_WHILE_433_I(p, o, s) BOOST_PP_IF(p(434, s), BOOST_PP_WHILE_434, s BOOST_PP_TUPLE_EAT_3)(p, o, o(434, s))
# define BOOST_PP_WHILE_434_I(p, o, s) BOOST_PP_IF(p(435, s), BOOST_PP_WHILE_435, s BOOST_PP_TUPLE_EAT_3)(p, o, o(435, s))
# define BOOST_PP_WHILE_435_I(p, o, s) BOOST_PP_IF(p(436, s), BOOST_PP_WHILE_436, s BOOST_PP_TUPLE_EAT_3)(p, o, o(436, s))
# define BOOST_PP_WHILE_436_I(p, o, s) BOOST_PP_IF(p(437, s), BOOST_PP_WHILE_437, s BOOST_PP_TUPLE_EAT_3)(p, o, o(437, s))
# define BOOST_PP_WHILE_437_I(p, o, s) BOOST_PP_IF(p(438, s), BOOST_PP_WHILE_438, s BOOST_PP_TUPLE_EAT_3)(p, o, o(438, s))
# define BOOST_PP_WHILE_438_I(p, o, s) BOOST_PP_IF(p(439, s), BOOST_PP_WHILE_439, s BOOST_PP_TUPLE_EAT_3)(p, o, o(439, s))
# define BOOST_PP_WHILE_439_I(p, o, s) BOOST_PP_IF(p(440, s), BOOST_PP_WHILE_440, s BOOST_PP_TUPLE_EAT_3)(p, o, o(440, s))
# define BOOST_PP_WHILE_440_I(p, o, s) BOOST_PP_IF(p(441, s), BOOST_PP_WHILE_441, s BOOST_PP_TUPLE_EAT_3)(p, o, o(441, s))
# define BOOST_PP_WHILE_441_I(p, o, s) BOOST_PP_IF(p(442, s), BOOST_PP_WHILE_442, s BOOST_PP_TUPLE_EAT_3)(p, o, o(442, s))
# define BOOST_PP_WHILE_442_I(p, o, s) BOOST_PP_IF(p(443, s), BOOST_PP_WHILE_443, s BOOST_PP_TUPLE_EAT_3)(p, o, o(443, s))
# define BOOST_PP_WHILE_443_I(p, o, s) BOOST_PP_IF(p(444, s), BOOST_PP_WHILE_444, s BOOST_PP_TUPLE_EAT_3)(p, o, o(444, s))
# define BOOST_PP_WHILE_444_I(p, o, s) BOOST_PP_IF(p(445, s), BOOST_PP_WHILE_445, s BOOST_PP_TUPLE_EAT_3)(p, o, o(445, s))
# define BOOST_PP_WHILE_445_I(p, o, s) BOOST_PP_IF(p(446, s), BOOST_PP_WHILE_446, s BOOST_PP_TUPLE_EAT_3)(p, o, o(446, s))
# define BOOST_PP_WHILE_446_I(p, o, s) BOOST_PP_IF(p(447, s), BOOST_PP_WHILE_447, s BOOST_PP_TUPLE_EAT_3)(p, o, o(447, s))
# define BOOST_PP_WHILE_447_I(p, o, s) BOOST_PP_IF(p(448, s), BOOST_PP_WHILE_448, s BOOST_PP_TUPLE_EAT_3)(p, o, o(448, s))
# define BOOST_PP_WHILE_448_I(p, o, s) BOOST_PP_IF(p(449, s), BOOST_PP_WHILE_449, s BOOST_PP_TUPLE_EAT_3)(p, o, o(449, s))
# define BOOST_PP_WHILE_449_I(p, o, s) BOOST_PP_IF(p(450, s), BOOST_PP_WHILE_450, s BOOST_PP_TUPLE_EAT_3)(p, o, o(450, s))
# define BOOST_PP_WHILE_450_I(p, o, s) BOOST_PP_IF(p(451, s), BOOST_PP_WHILE_451, s BOOST_PP_TUPLE_EAT_3)(p, o, o(451, s))
# define BOOST_PP_WHILE_451_I(p, o, s) BOOST_PP_IF(p(452, s), BOOST_PP_WHILE_452, s BOOST_PP_TUPLE_EAT_3)(p, o, o(452, s))
# define BOOST_PP_WHILE_452_I(p, o, s) BOOST_PP_IF(p(453, s), BOOST_PP_WHILE_453, s BOOST_PP_TUPLE_EAT_3)(p, o, o(453, s))
# define BOOST_PP_WHILE_453_I(p, o, s) BOOST_PP_IF(p(454, s), BOOST_PP_WHILE_454, s BOOST_PP_TUPLE_EAT_3)(p, o, o(454, s))
# define BOOST_PP_WHILE_454_I(p, o, s) BOOST_PP_IF(p(455, s), BOOST_PP_WHILE_455, s BOOST_PP_TUPLE_EAT_3)(p, o, o(455, s))
# define BOOST_PP_WHILE_455_I(p, o, s) BOOST_PP_IF(p(456, s), BOOST_PP_WHILE_456, s BOOST_PP_TUPLE_EAT_3)(p, o, o(456, s))
# define BOOST_PP_WHILE_456_I(p, o, s) BOOST_PP_IF(p(457, s), BOOST_PP_WHILE_457, s BOOST_PP_TUPLE_EAT_3)(p, o, o(457, s))
# define BOOST_PP_WHILE_457_I(p, o, s) BOOST_PP_IF(p(458, s), BOOST_PP_WHILE_458, s BOOST_PP_TUPLE_EAT_3)(p, o, o(458, s))
# define BOOST_PP_WHILE_458_I(p, o, s) BOOST_PP_IF(p(459, s), BOOST_PP_WHILE_459, s BOOST_PP_TUPLE_EAT_3)(p, o, o(459, s))
# define BOOST_PP_WHILE_459_I(p, o, s) BOOST_PP_IF(p(460, s), BOOST_PP_WHILE_460, s BOOST_PP_TUPLE_EAT_3)(p, o, o(460, s))
# define BOOST_PP_WHILE_460_I(p, o, s) BOOST_PP_IF(p(461, s), BOOST_PP_WHILE_461, s BOOST_PP_TUPLE_EAT_3)(p, o, o(461, s))
# define BOOST_PP_WHILE_461_I(p, o, s) BOOST_PP_IF(p(462, s), BOOST_PP_WHILE_462, s BOOST_PP_TUPLE_EAT_3)(p, o, o(462, s))
# define BOOST_PP_WHILE_462_I(p, o, s) BOOST_PP_IF(p(463, s), BOOST_PP_WHILE_463, s BOOST_PP_TUPLE_EAT_3)(p, o, o(463, s))
# define BOOST_PP_WHILE_463_I(p, o, s) BOOST_PP_IF(p(464, s), BOOST_PP_WHILE_464, s BOOST_PP_TUPLE_EAT_3)(p, o, o(464, s))
# define BOOST_PP_WHILE_464_I(p, o, s) BOOST_PP_IF(p(465, s), BOOST_PP_WHILE_465, s BOOST_PP_TUPLE_EAT_3)(p, o, o(465, s))
# define BOOST_PP_WHILE_465_I(p, o, s) BOOST_PP_IF(p(466, s), BOOST_PP_WHILE_466, s BOOST_PP_TUPLE_EAT_3)(p, o, o(466, s))
# define BOOST_PP_WHILE_466_I(p, o, s) BOOST_PP_IF(p(467, s), BOOST_PP_WHILE_467, s BOOST_PP_TUPLE_EAT_3)(p, o, o(467, s))
# define BOOST_PP_WHILE_467_I(p, o, s) BOOST_PP_IF(p(468, s), BOOST_PP_WHILE_468, s BOOST_PP_TUPLE_EAT_3)(p, o, o(468, s))
# define BOOST_PP_WHILE_468_I(p, o, s) BOOST_PP_IF(p(469, s), BOOST_PP_WHILE_469, s BOOST_PP_TUPLE_EAT_3)(p, o, o(469, s))
# define BOOST_PP_WHILE_469_I(p, o, s) BOOST_PP_IF(p(470, s), BOOST_PP_WHILE_470, s BOOST_PP_TUPLE_EAT_3)(p, o, o(470, s))
# define BOOST_PP_WHILE_470_I(p, o, s) BOOST_PP_IF(p(471, s), BOOST_PP_WHILE_471, s BOOST_PP_TUPLE_EAT_3)(p, o, o(471, s))
# define BOOST_PP_WHILE_471_I(p, o, s) BOOST_PP_IF(p(472, s), BOOST_PP_WHILE_472, s BOOST_PP_TUPLE_EAT_3)(p, o, o(472, s))
# define BOOST_PP_WHILE_472_I(p, o, s) BOOST_PP_IF(p(473, s), BOOST_PP_WHILE_473, s BOOST_PP_TUPLE_EAT_3)(p, o, o(473, s))
# define BOOST_PP_WHILE_473_I(p, o, s) BOOST_PP_IF(p(474, s), BOOST_PP_WHILE_474, s BOOST_PP_TUPLE_EAT_3)(p, o, o(474, s))
# define BOOST_PP_WHILE_474_I(p, o, s) BOOST_PP_IF(p(475, s), BOOST_PP_WHILE_475, s BOOST_PP_TUPLE_EAT_3)(p, o, o(475, s))
# define BOOST_PP_WHILE_475_I(p, o, s) BOOST_PP_IF(p(476, s), BOOST_PP_WHILE_476, s BOOST_PP_TUPLE_EAT_3)(p, o, o(476, s))
# define BOOST_PP_WHILE_476_I(p, o, s) BOOST_PP_IF(p(477, s), BOOST_PP_WHILE_477, s BOOST_PP_TUPLE_EAT_3)(p, o, o(477, s))
# define BOOST_PP_WHILE_477_I(p, o, s) BOOST_PP_IF(p(478, s), BOOST_PP_WHILE_478, s BOOST_PP_TUPLE_EAT_3)(p, o, o(478, s))
# define BOOST_PP_WHILE_478_I(p, o, s) BOOST_PP_IF(p(479, s), BOOST_PP_WHILE_479, s BOOST_PP_TUPLE_EAT_3)(p, o, o(479, s))
# define BOOST_PP_WHILE_479_I(p, o, s) BOOST_PP_IF(p(480, s), BOOST_PP_WHILE_480, s BOOST_PP_TUPLE_EAT_3)(p, o, o(480, s))
# define BOOST_PP_WHILE_480_I(p, o, s) BOOST_PP_IF(p(481, s), BOOST_PP_WHILE_481, s BOOST_PP_TUPLE_EAT_3)(p, o, o(481, s))
# define BOOST_PP_WHILE_481_I(p, o, s) BOOST_PP_IF(p(482, s), BOOST_PP_WHILE_482, s BOOST_PP_TUPLE_EAT_3)(p, o, o(482, s))
# define BOOST_PP_WHILE_482_I(p, o, s) BOOST_PP_IF(p(483, s), BOOST_PP_WHILE_483, s BOOST_PP_TUPLE_EAT_3)(p, o, o(483, s))
# define BOOST_PP_WHILE_483_I(p, o, s) BOOST_PP_IF(p(484, s), BOOST_PP_WHILE_484, s BOOST_PP_TUPLE_EAT_3)(p, o, o(484, s))
# define BOOST_PP_WHILE_484_I(p, o, s) BOOST_PP_IF(p(485, s), BOOST_PP_WHILE_485, s BOOST_PP_TUPLE_EAT_3)(p, o, o(485, s))
# define BOOST_PP_WHILE_485_I(p, o, s) BOOST_PP_IF(p(486, s), BOOST_PP_WHILE_486, s BOOST_PP_TUPLE_EAT_3)(p, o, o(486, s))
# define BOOST_PP_WHILE_486_I(p, o, s) BOOST_PP_IF(p(487, s), BOOST_PP_WHILE_487, s BOOST_PP_TUPLE_EAT_3)(p, o, o(487, s))
# define BOOST_PP_WHILE_487_I(p, o, s) BOOST_PP_IF(p(488, s), BOOST_PP_WHILE_488, s BOOST_PP_TUPLE_EAT_3)(p, o, o(488, s))
# define BOOST_PP_WHILE_488_I(p, o, s) BOOST_PP_IF(p(489, s), BOOST_PP_WHILE_489, s BOOST_PP_TUPLE_EAT_3)(p, o, o(489, s))
# define BOOST_PP_WHILE_489_I(p, o, s) BOOST_PP_IF(p(490, s), BOOST_PP_WHILE_490, s BOOST_PP_TUPLE_EAT_3)(p, o, o(490, s))
# define BOOST_PP_WHILE_490_I(p, o, s) BOOST_PP_IF(p(491, s), BOOST_PP_WHILE_491, s BOOST_PP_TUPLE_EAT_3)(p, o, o(491, s))
# define BOOST_PP_WHILE_491_I(p, o, s) BOOST_PP_IF(p(492, s), BOOST_PP_WHILE_492, s BOOST_PP_TUPLE_EAT_3)(p, o, o(492, s))
# define BOOST_PP_WHILE_492_I(p, o, s) BOOST_PP_IF(p(493, s), BOOST_PP_WHILE_493, s BOOST_PP_TUPLE_EAT_3)(p, o, o(493, s))
# define BOOST_PP_WHILE_493_I(p, o, s) BOOST_PP_IF(p(494, s), BOOST_PP_WHILE_494, s BOOST_PP_TUPLE_EAT_3)(p, o, o(494, s))
# define BOOST_PP_WHILE_494_I(p, o, s) BOOST_PP_IF(p(495, s), BOOST_PP_WHILE_495, s BOOST_PP_TUPLE_EAT_3)(p, o, o(495, s))
# define BOOST_PP_WHILE_495_I(p, o, s) BOOST_PP_IF(p(496, s), BOOST_PP_WHILE_496, s BOOST_PP_TUPLE_EAT_3)(p, o, o(496, s))
# define BOOST_PP_WHILE_496_I(p, o, s) BOOST_PP_IF(p(497, s), BOOST_PP_WHILE_497, s BOOST_PP_TUPLE_EAT_3)(p, o, o(497, s))
# define BOOST_PP_WHILE_497_I(p, o, s) BOOST_PP_IF(p(498, s), BOOST_PP_WHILE_498, s BOOST_PP_TUPLE_EAT_3)(p, o, o(498, s))
# define BOOST_PP_WHILE_498_I(p, o, s) BOOST_PP_IF(p(499, s), BOOST_PP_WHILE_499, s BOOST_PP_TUPLE_EAT_3)(p, o, o(499, s))
# define BOOST_PP_WHILE_499_I(p, o, s) BOOST_PP_IF(p(500, s), BOOST_PP_WHILE_500, s BOOST_PP_TUPLE_EAT_3)(p, o, o(500, s))
# define BOOST_PP_WHILE_500_I(p, o, s) BOOST_PP_IF(p(501, s), BOOST_PP_WHILE_501, s BOOST_PP_TUPLE_EAT_3)(p, o, o(501, s))
# define BOOST_PP_WHILE_501_I(p, o, s) BOOST_PP_IF(p(502, s), BOOST_PP_WHILE_502, s BOOST_PP_TUPLE_EAT_3)(p, o, o(502, s))
# define BOOST_PP_WHILE_502_I(p, o, s) BOOST_PP_IF(p(503, s), BOOST_PP_WHILE_503, s BOOST_PP_TUPLE_EAT_3)(p, o, o(503, s))
# define BOOST_PP_WHILE_503_I(p, o, s) BOOST_PP_IF(p(504, s), BOOST_PP_WHILE_504, s BOOST_PP_TUPLE_EAT_3)(p, o, o(504, s))
# define BOOST_PP_WHILE_504_I(p, o, s) BOOST_PP_IF(p(505, s), BOOST_PP_WHILE_505, s BOOST_PP_TUPLE_EAT_3)(p, o, o(505, s))
# define BOOST_PP_WHILE_505_I(p, o, s) BOOST_PP_IF(p(506, s), BOOST_PP_WHILE_506, s BOOST_PP_TUPLE_EAT_3)(p, o, o(506, s))
# define BOOST_PP_WHILE_506_I(p, o, s) BOOST_PP_IF(p(507, s), BOOST_PP_WHILE_507, s BOOST_PP_TUPLE_EAT_3)(p, o, o(507, s))
# define BOOST_PP_WHILE_507_I(p, o, s) BOOST_PP_IF(p(508, s), BOOST_PP_WHILE_508, s BOOST_PP_TUPLE_EAT_3)(p, o, o(508, s))
# define BOOST_PP_WHILE_508_I(p, o, s) BOOST_PP_IF(p(509, s), BOOST_PP_WHILE_509, s BOOST_PP_TUPLE_EAT_3)(p, o, o(509, s))
# define BOOST_PP_WHILE_509_I(p, o, s) BOOST_PP_IF(p(510, s), BOOST_PP_WHILE_510, s BOOST_PP_TUPLE_EAT_3)(p, o, o(510, s))
# define BOOST_PP_WHILE_510_I(p, o, s) BOOST_PP_IF(p(511, s), BOOST_PP_WHILE_511, s BOOST_PP_TUPLE_EAT_3)(p, o, o(511, s))
# define BOOST_PP_WHILE_511_I(p, o, s) BOOST_PP_IF(p(512, s), BOOST_PP_WHILE_512, s BOOST_PP_TUPLE_EAT_3)(p, o, o(512, s))
# define BOOST_PP_WHILE_512_I(p, o, s) BOOST_PP_IF(p(513, s), BOOST_PP_WHILE_513, s BOOST_PP_TUPLE_EAT_3)(p, o, o(513, s))
#
# endif

View File

@ -8,12 +8,17 @@
# */
#
# /* Revised by Paul Mensonides (2002) */
# /* Revised by Edward Diener (2020) */
#
# /* See http://www.boost.org for most recent version. */
#
# ifndef BOOST_PREPROCESSOR_CONTROL_DETAIL_EDG_WHILE_HPP
# define BOOST_PREPROCESSOR_CONTROL_DETAIL_EDG_WHILE_HPP
#
# include <boost/preprocessor/config/config.hpp>
#
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
#
# include <boost/preprocessor/control/if.hpp>
# include <boost/preprocessor/tuple/eat.hpp>
#
@ -531,4 +536,26 @@
# define BOOST_PP_WHILE_255_I(p, o, s) BOOST_PP_IF(p(256, s), BOOST_PP_WHILE_256, s BOOST_PP_TUPLE_EAT_3)(p, o, o(256, s))
# define BOOST_PP_WHILE_256_I(p, o, s) BOOST_PP_IF(p(257, s), BOOST_PP_WHILE_257, s BOOST_PP_TUPLE_EAT_3)(p, o, o(257, s))
#
# else
#
# include <boost/preprocessor/control/if.hpp>
# include <boost/preprocessor/tuple/eat.hpp>
#
# include <boost/preprocessor/config/limits.hpp>
#
# if BOOST_PP_LIMIT_WHILE == 256
# include <boost/preprocessor/control/detail/edg/limits/while_256.hpp>
# elif BOOST_PP_LIMIT_WHILE == 512
# include <boost/preprocessor/control/detail/edg/limits/while_256.hpp>
# include <boost/preprocessor/control/detail/edg/limits/while_512.hpp>
# elif BOOST_PP_LIMIT_WHILE == 1024
# include <boost/preprocessor/control/detail/edg/limits/while_256.hpp>
# include <boost/preprocessor/control/detail/edg/limits/while_512.hpp>
# include <boost/preprocessor/control/detail/edg/limits/while_1024.hpp>
# else
# error Incorrect value for the BOOST_PP_LIMIT_WHILE limit
# endif
#
# endif
#
# endif

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More